본문 바로가기

프로그래밍 언어/Javascript

[Javascript/Codility] Lesson2) Array : CyclicRotation

[Codility] Lesson2) Array : CyclicRotation


문제

주어진 배열 A의 요소들을 K만큼 로테이션을 돌린 배열을 반환한다.

 

ex) 
solution([3, 8, 9, 7, 6], 3)
>>
[3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7]
[6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9]
[7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8]

 

내가 푼 소스코드

function solution(A, K) {

    let arr = A.length==0 ? [] : A;

    if (arr.length == K){
        return arr;
    }

    for (let i = 0; i < K; i++){
        let tail = arr.pop();
        A.unshift(tail);
    }

    return arr;

}

이 문제는 효율성보다는 정확성을 테스트한다고 한다.

그래서 처음에 주어진 배열 A의 유효성을 검증하지 못하고 그냥 풀어서 empty 배열이 인풋일 때 런타임 에러가 떴다. 

이 코드에서는 A.length가 0인지 확인해서 undefined인 경우 [] 빈 배열로 선언해 주는 코드가 가장 중요한 것 같다. 

 


References