Algorithm/Codility
[코딜리티/Java] CyclicRotation
wavid
2020. 12. 26. 00:47

배열 A와 int K를 입력 받아서, K번만큼 오른쪽으로 로테이션한 결과를 반환하도록 구현하는 문제.
덱을 사용하여 K번만큼 뒤에서 빼서 앞으로 넣고 이런 식으로 로테이션함.
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int[] A, int K) {
// 빈 배열 예외처리
if (A.length == 0) {
return A;
}
int[] result = new int[A.length];
Deque<Integer> deque = new ArrayDeque<>();
for (int a : A) {
deque.add(a);
}
for (int i = 0; i < K; i++) {
deque.addFirst(deque.pollLast());
}
int length = deque.size();
for (int i = 0; i < length; i++) {
result[i] = deque.poll();
}
return result;
}
}