배열 A 요소를 K만큼 뒤로 이동시킨 배열을 return 하는게 문제였다.
하나씩 미뤄서 구해도 되지만 좀 더 생각 해보자
배열 A의 길이가 정해져 있고, 배열의 길이만큼 뒤로 미루면 원래의 A로 돌아온다.
그리고 배열 A의 요소들의 순서는 일정하다.
이 점을 생각해보면 배열을 미루는 횟수를 줄일 수 있다.
(A에 빈 배열, K에 0이 들어올 수 있음에 유의한다.)
public int[] solution(int[] A, int K) {
if(A.length == 0) {
return A;
}
int len = A.length;
int diff = K % len;
if (diff == 0) {
return A;
}
int startIndex = len - diff;
int[] answer = new int[len];
for(int index = 0; index < len; index++) {
int targetIndex = (startIndex + index) % len;
answer[index] = A[targetIndex];
}
return answer;
}