Codility Lesson2. Arrays - Cycle Rotation

세나정·2023년 4월 24일
0
post-thumbnail

Tasks

N개의 정수로 구성된 배열 A가 주어집니다. 배열의 회전은 각 요소가 한 인덱스씩 오른쪽으로 이동하고 배열의 마지막 요소가 첫 번째 위치로 이동됨을 의미합니다. 예를 들어, 배열 A = [3, 8, 9, 7, 6]의 회전은 [6, 3, 8, 9, 7]입니다(요소는 한 인덱스만큼 오른쪽으로 이동하고 6은 첫 번째 위치로 이동합니다).

목표는 배열 AK 시간을 회전하는 것입니다. 즉, A의 각 요소는 오른쪽으로 K번 이동합니다.

함수 작성:

class Solution { public int[] solution(int[] A, int K); }

N개의 정수와 정수 K로 구성된 배열 A가 주어지면 K번 회전된 배열 A를 반환합니다.

예를 들어, 주어진

A = [3, 8, 9, 7, 6]
케이 = 3

함수는 [9, 7, 6, 3, 8]을 반환해야 합니다. 세 번의 회전이 이루어졌습니다.

[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]

다른 예로 주어진

A = [0, 0, 0]
케이 = 1

함수는 [0, 0, 0]을 반환해야 합니다.

주어진

A = [1, 2, 3, 4]
케이 = 4

함수는 [1, 2, 3, 4]를 반환해야 합니다.

다음을 가정합니다.

N 및 K는 범위 [ 0 .. 100 ] 내의 정수이고;
배열 A의 각 요소는 [ −1,000 .. 1,000 ] 범위 내의 정수입니다 .
솔루션에서 정확성 에 중점을 둡니다 . 솔루션의 성능은 평가의 초점이 아닙니다.

내 풀이

// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');

function solution(A, K) {
    for(i=0; i<K; i++) {
        A.unshift(A.pop())
    }
    return A
}

전에 회전식으로 풀어봤던 문제기에 짧은 시간에 풀었었다.
하지만 한 가지 이해가 안 가는 건 문제에서도 공백의 배열이 주어졌을 땐 어떤 ㄱ밧을 리턴해야 하는지 나와있지 않은데.. 어떻게 처리해야할지 모르겠다.

풀이 보완

function solution(A, K) {
        for (i=0; i<K; i++){
        A.unshift(A.pop());
    }
    return A[0] != undefined ? A : [];

}

만약에 0번 인덱스가 undefined라면 빈 배열을 return하도록 삼항연산자를 사용하면 됨

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글