Algorithms

[Codility] CyclicRotation

유자맛바나나 2022. 2. 24. 16:29

예외사항을 생각해야 한다.

Empty array, input 배열의 크기보다 rotation 횟수가 더 클때, K가 0일 때 등을 추가 테스트 케이스로 넣어준다

 

Additional Test Case

([], 3)
([1,2,3,4], 5)
([1,2,3,4], 0)

 

Code

class Solution {
    public int[] solution(int[] A, int K) {
        int[] res = new int[A.length];

        // K 값이 A 배열의 길이보다 클 때 중복해서 rotation 하는 것이므로 나머지를 대입
        if (A.length != 0 && K > A.length) {
            K = K % A.length;
        }

        // A배열의 크기가 K와 동일하면 로테이션 필요 없음
        // A배열의 크기가 0이거나 K가 0이라면 로테이션 필요 없음
        if (K == A.length || A.length == 0 || K==0) {
            res = A;
        } else {
            for (int i = 0; i < K; i++) {
                res[i] = A[(A.length - K + i)];
            }
            for (int i = K; i < A.length; i++) {
                res[i] = A[i - K];
            }
        }
        return res;
    }
}

'Algorithms' 카테고리의 다른 글

[Codility] PermMissingElem  (0) 2022.02.28
[Codility] OddOccurrencesInArray  (0) 2022.02.26
[Codility] BinaryGap  (0) 2022.02.22
[프로그래머스] 모의고사  (0) 2022.02.20
[프로그래머스] 완주하지 못한 선수  (0) 2022.02.13