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;
    }
}