배열 회전시키기
문제 #
정수가 담긴 배열 numbers
와 문자열 direction
가 매개변수로 주어집니다. 배열 numbers
의 원소를 direction
방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
- 제한사항
- 3 ≤
numbers
의 길이 ≤ 20 direction
은 “left” 와 “right” 둘 중 하나입니다.
- 3 ≤
- 입출력 예
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]
나의 풀이 #
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
int direc = 0;
direc = direction.equals("right")? -1 : 1;
for(int i = 0; i<numbers.length; i++){
answer[i] = numbers[(numbers.length+i+direc)%numbers.length];
}
return answer;
}
}
- 방향이 오른쪽일 경우 answer[i+1]=numbers[i] or answer[i]=numbers[i-1]
- 인덱스에 -1이나 +1을 할경우 인덱스로 -1혹은 길이보다 큰 값이되어 오류발생
- n의배수+(수식)을 n으로 나눈 나머지는 (수식)과 동일함을 이용하여 오류방지
다른 사람의 풀이 #
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();
}
}
- 이 솔루션은
numbers
배열을List
로 변환합니다. direction
이"right"
인 경우, 마지막 요소를 앞에 추가하고 마지막 요소를 제거합니다.direction
이"left"
인 경우, 첫 번째 요소를 끝에 추가하고 첫 번째 요소를 제거합니다.- 마지막으로,
List
를 배열로 다시 변환하고 반환합니다.
관련개념 학습 #
- 관련 개념을 찾아서 공부한 내용을 적는다.
ctrl + p
로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.- 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.