본문 바로가기
Self Dev./Codility

[Codility] CyclicRotation 100%

by 지구 2019. 9. 7.
주 1회 회사 동기들이랑 알고리즘 스터디를 진행하고 있다.
현재 진행하고 있는 스터디는 오프라인 코딩테스트로도 많이 활용하고 있는 Codility.
각자 풀고 자기가 푼 소스를 리뷰하는 형식인데, 뜻 깊고 보람도 있고 참으로 도움이 많이 된다 :)
뛰어나진 않지만 각 단원 별로 100% 만들기 위해 노력 중이고, 기록 및 공유하기 위해 글을 작성한다.

바로가기   >Codility   >CyclicRotation

 

문제 해석 : 입력받은 배열을, 입력받은 정수만큼 오른쪽으로 이동시킨 뒤의 배열을 리턴.

문제 풀이 : 일단, 배열의 길이랑 이동시킬 값이 동일하면 굳이 로직 안타게끔 위에 추가했고..
처음엔 주석처리한 삼항연산자 쓴 로직대로 했다가.. 여러가지 경우의 수를 계산해보니까 계산식을 유추할 수 있었다!
요고 핵심은 "(i+이동시킬 거리) % 배열길이 " 🌝

 

class Solution {
    public int[] solution(int[] A, int K) {
        // A 배열의 길이와 K 값이 같으면 A 배열 그냥 리턴
        if (A.length == K) { return A; }
        
        // 초기 변수 선언
        int[] result = new int[A.length];
        
        for (int i=0; i<A.length; i++) {
            // 계산한 바꿀 자리 위치가 length를 초과하면 length를 빼준다.
            //int newIdx = i+K >= A.length ? i+K-A.length : i+K;
            int newIdx = (i+K) % A.length;
            
            // 최종 배열값에는 계산한 인덱스에 해당 원소값을 넣는다.
            result[newIdx] = A[i];
        }
        
        return result;
    }
}

 

 

반응형

'Self Dev. > Codility' 카테고리의 다른 글

[Codility] TapeEquilibrium 100%  (0) 2019.09.08
[Codility] PermMissingElem 100%  (0) 2019.09.08
[Codility] FrogJmp 100%  (0) 2019.09.08
[Codility] OddOccurrencesInArray 100%  (0) 2019.09.07
[Codility] BinaryGap 100%  (0) 2019.06.02

댓글