[Codility - Java] 2. Array - 1. CyclicRotation

2023. 1. 31. 13:16Java/coding test

반응형

CyclicRotation

Rotate an array to the right by a given number of steps.

An array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is moved to the first place. For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7] (elements are shifted right by one index and 6 is moved to the first place).

The goal is to rotate array A K times; that is, each element of A will be shifted to the right K times.

Write a function:

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

that, given an array A consisting of N integers and an integer K, returns the array A rotated K times.

For example, given

A = [3, 8, 9, 7, 6]
K = 3

the function should return [9, 7, 6, 3, 8]. Three rotations were made:

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

For another example, given

A = [0, 0, 0]
K = 1

the function should return [0, 0, 0]

Given

A = [1, 2, 3, 4]
K = 4

the function should return [1, 2, 3, 4]

Assume that:

N and K are integers within the range [0..100];
each element of array A is an integer within the range [−1,000..1,000].
In your solution, focus on correctness. The performance of your solution will not be the focus of the assessment.


N개의 정수로 구성된 배열 A
K 만큼 오른쪽으로 rotate한 배열을 리턴하는 코드를 구하면 됩니다.

0 <= N, K <= 100 을 만족하기 때문에, 빈 문자열이 들어왔을 때에 대한 처리도 해야합니다.

static int[] cyclicRotation(int[] A, int K) {
    if(A == null || A.length < 1 || K == 0) {
        return A;
    }

    int[] result = new int[A.length];
    K %= A.length;
    for (int i = 0; i < A.length; i++) {
        if (i + K < A.length) {
            result[i + K] = A[i];
        } else {
            result[i + K - A.length] = A[i];
        }
    }
    return result;
}
728x90
반응형