ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [Codility] CyclicRotation 87점→100점
    알고리즘 2019. 3. 3. 16:56


    문제출처 : https://app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/


    문제요약 : 입력받은 횟수(K)만큼 배열을 순환시키는 것.

                  맨뒤의 요소를 뽑아서 앞으로 넣은후 한칸씩 인덱스를 밀어주는 형식


    [100점]


    문제를 보면 배열의 맨뒤의 요소를 뽑아서 앞으로 넣은 후 그뒤에 요소들을 하나씩 밀어가고있다.


    ex) 2회전 

     주어진배열 {1, 2, 3}

    1회전 {3, 1, 2}

    2회전 {2, 3, 1}


    자료구조를 공부를했다면 쉽게 풀 수 있는 문제다. 바로 선입선출(FIFO)성질을 가진 Que를 선택했다.


    조금 아쉬운 점은 Que를 Array로 변환하는 과정이 조금 지저분하다는 생각이 들었다. 충분히 리팩토링 할 코드라고 생각한다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package test_java2;
     
    import java.util.ArrayDeque;
    import java.util.Deque;
     
    public class Main {
     
        public static void main(String[] args) {
            int[] arr = { 1234 };
            solution(arr, 3);
        }
     
        public static int[] solution(int[] A, int K) {
            if (A.length == 0return A;
     
            Deque<Integer> que = new ArrayDeque<Integer>();
     
            for (Integer i : A) que.add(i);
     
            for(int j=0; j<K; j++) {
                Integer temp = que.pollLast();
                que.addFirst(temp);
            }
                
            Object[] obj = que.toArray();
     
            int[] result = new int[obj.length];
     
            for (int j = 0; j < obj.length; j++) {
                result[j] = (int) obj[j];
            }
     
            return result;
        }
     
    }// CALSS END
     
    cs

    14행 : 처음에 이부분 예외처리 안해서 87점 떳었음..입력받은 배열이 null 일때 NPE난다고..ㅎㅎ


    다풀고나서 다른 사람들이 푼거 찾아보니, 대부분 아래처럼짯다.. 다들 어떻게 저렇게 똑같은 로직을 짠거지? 신기 할 따름이다



    1
    2
    3
    4
    5
    6
    int result[] = new int[arraySize];
     
    for (int i = 0; i < arraySize; i++) {
            result[(i + K) % arraySize] = A[i];
    }
     
    cs


    '알고리즘' 카테고리의 다른 글

    [Codility] FrogJmp 100점  (0) 2019.03.23
    [Codility] BinaryGap 100점  (0) 2019.03.14
    [Codility] OddOccurrencesInArray 55점→100점  (0) 2019.02.16
    [알고리즘] 삽입정렬  (0) 2018.08.20
    [알고리즘] 선택정렬  (0) 2018.08.20

    댓글

Designed by Tistory.