[ํ ์ฝํ ์ฝ1.5 4-02] ๋ฐฐ์ด ํ์ ์ํค๊ธฐ
๐กํ ์ฝํ ์ฝ ์์ฆ 1.5 4ํ ๋ชจ์ off-site ๋ฌธ์ ํ์ด์ ๋๋ค. (2025.02.15)
๋ฌธ์
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฐ์ด ํ์ ์ํค๊ธฐ
๋ด์ฉ
์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers
์ ๋ฌธ์์ด direction
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ฐฐ์ด numbers
์ ์์๋ฅผ direction
๋ฐฉํฅ์ผ๋ก ํ ์นธ์ฉ ํ์ ์ํจ ๋ฐฐ์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๊ธฐ๋กํ๊ธฐ
๐ก ์ด๋๊น์ง ์๊ฐํด๋ดค๋์ง ๋จ๊ณ์ ์ผ๋ก ๊ธฐ๋กํด๋ด ๋๋ค.
์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ ค ํ๋์?
์ํ ํ๋ฅผ ์ฌ์ฉํ์๋ค.
์ ์ฉ ๊ทผ๊ฑฐ๋ ๋ฌด์์ธ๊ฐ์?
๋ฌธ์ ์ค๋ช ์์ ์ผ์ชฝ, ํน์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ํ๋ค๋ ๋ง์ ๋ณด๊ณ ์ํ ํ๊ฐ ์ ํฉํ๋ค๊ณ ํ๋จํ์๋ค.
๋ฌธ์ ํ์ด ๊ณผ์ ์์ ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ป๊ฒ ์ฝ๋๋ก ๊ตฌํํ๋ ค ํ๋์?
๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ฌ์ฉํ๋ค.
ํ์ด
ํ์ด ์๊ฐ
์์ ์๊ฐ | ์ข ๋ฃ ์๊ฐ | ์ด ์์ ์๊ฐ |
---|---|---|
20๋ถ |
๋ฌธ์ ๋ถ์
์ ์ฝ ์ฌํญ ํ์ & ํ ์คํธ ์ผ์ด์ค ์์ฑ
์ ํ์ฌํญ
- 3 ≤
numbers
์ ๊ธธ์ด ≤ 20 direction
์ "left" ์ "right" ๋ ์ค ํ๋์ ๋๋ค.
์ ๋ ฅ๊ฐ ๋ถ์
๐ก ์ ๋ ฅ๊ฐ์ ๋ถ์ํ๋ฉด ๋ฌธ์ ์์ ์๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
numbers | direction | result |
---|---|---|
[1, 2, 3] | "right" | [3, 1, 2] |
[4, 455, 6, 4, -1, 45, 6] | "left" | [455, 6, 4, -1, 45, 6, 4] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
numbers
๊ฐ [1, 2, 3]์ด๊ณdirection
์ด "right" ์ด๋ฏ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ํ์ ์ํจ [3, 1, 2]๋ฅผ returnํฉ๋๋ค.
์์ฌ ์ฝ๋ ์์ฑ
๐ก ์์ฌ ์ฝ๋๋ ๋์ ์ค์ฌ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ ๋ฌธ์ ํด๊ฒฐ ์์๋ก ์์ฑํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ฅผ ์ถฉ๋ถํ ํ ์คํธํด๋ด ๋๋ค.
1์ฐจ ํ์ด
solution(int[] numbers, String direction) {
// numbers๋ฅผ ๋ ๋ฒ ๋ฐ๋ณตํ๋ ๋ฐฐ์ด ์์ฑ
// ์์ ์ง์
// - left ์ผ ๊ฒฝ์ฐ 1๋ถํฐ
// - right์ผ ๊ฒฝ์ฐ -1 ๋ถํฐ -> ์ํ ํ์ด๋ฏ๋ก (n-1)
// ์์ ์ง์ ์ผ๋ก๋ถํฐ n๊ฐ๋งํผ ์๋ผ ๋ฐฐ์ด ๋ฆฌํด
}
2์ฐจ ํ์ด
solution(int[] numbers, String direction) {
// ๋ฐฐ์ด ์์ฑ
// ์์ ์ง์
// - left ์ผ ๊ฒฝ์ฐ 1๋ถํฐ
// - right์ผ ๊ฒฝ์ฐ -1 ๋ถํฐ -> ์ํ ํ์ด๋ฏ๋ก (n-1)
// ๋ฐฐ์ด[i] = numbers[(์์ ์ง์ + i) % n]
// ๋ฐฐ์ด ๋ฐํ
}
๊ตฌํ
1์ฐจ ํ์ด
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers, String direction) {
int n = numbers.length;
int[] answer = new int[n * 2];
for (int i = 0; i < n * 2; i++) {
answer[i] = numbers[i % n];
}
return Arrays.copyOfRange(answer, direction.equals("right") ? n - 1 : 1, direction.equals("right") ? 2 * n - 1 : n + 1);
}
}
2์ฐจ ํ์ด
class Solution {
public int[] solution(int[] numbers, String direction) {
int n = numbers.length;
int[] answer = new int[n];
int point = direction.equals("right") ? n - 1 : 1;
for (int i = 0; i < n; i++) {
answer[i] = numbers[(point + i) % n];
}
return answer;
}
}
๋ณต๊ธฐํ๊ธฐ
๋ต์๊ณผ ๋์ ํ์ด๋ฅผ ๋น๊ตํด๋ณด์ธ์
์ถ์ฒ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ํ์ด
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] numbers, String direction) {
List<Integer> list = Arrays.stream(numbers).boxed().collect(Collectors.toList());
if (direction.equals("right")) {
list.add(0, list.get(list.size() - 1));
list.remove(list.size() - 1);
} else {
list.add(list.size(), list.get(0));
list.remove(0);
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
- ์ ๊ณต๋๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํ์ฉํ๋ ๊ฒ๋ ์ข๋ค.