Codility: CyclicRotation

이원희·2020년 11월 20일
0

📝 PS

목록 보기
6/65
post-thumbnail

배열 A 요소를 K만큼 뒤로 이동시킨 배열을 return 하는게 문제였다.
하나씩 미뤄서 구해도 되지만 좀 더 생각 해보자

배열 A의 길이가 정해져 있고, 배열의 길이만큼 뒤로 미루면 원래의 A로 돌아온다.
그리고 배열 A의 요소들의 순서는 일정하다.
이 점을 생각해보면 배열을 미루는 횟수를 줄일 수 있다.
(A에 빈 배열, K에 0이 들어올 수 있음에 유의한다.)

JAVA

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

0개의 댓글