-
[알고리즘/자바스크립트] Codility, CyclicRotation 문제 풀이Algorithm 2019. 11. 29. 14:37
Codility, CyclicRotation
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:
function solution(A, 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.
이번에도 배열과 관련된 쉬운 난이도의 codility 알고리즘 문제를 풀어보자.
어떤 배열 A와 숫자 K가 주어졌을 때, K번 회전한 배열을 구하는 문제이다.
즉, 어떤 배열 [1, 2, 3, 4]가 있을 때, 이 배열을 1번 회전하면 [4, 1, 2, 3]이 된다.
만약 2번 회전하면 [3, 4, 1, 2]가 된다.
(어떤 배열을 1번씩 회전할 때 마다 맨 오른쪽 요소가 맨 앞으로 오게 된다.)
내가 푼 방법은 이렇다.
만약에 주어진 숫자 K가 배열의 길이보다 작거나 배열의 길이와 같다면
배열의 뒤에서부터 K개의 요소를 잘라서 배열의 맨 앞에 붙이면 된다.
만약에 주어진 숫자 K가 배열의 길이보다 크다면 K를 배열의 길이로 나눈 나머지값을 K로 해서
배열의 뒤에서부터 K개의 요소를 자른다.
function solution(A, K) { const rotationNum = (K > A.length) ? (K % A.length) : K; return rotationNum === 0 ? A : [].concat(A.slice(-rotationNum), A.slice(0, A.length - rotationNum)); }
위 풀이에서 만약에 rotationNum 변수가 0이라면 배열은 회전할 필요가 없기 때문에 원래 배열을 그대로 리턴한다.
https://app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/
반응형'Algorithm' 카테고리의 다른 글
[알고리즘/자바스크립트] Codility, Dominator 문제 풀이 (127) 2020.05.24 [알고리즘/자바스크립트] Codility, PermCheck 문제 풀이 (252) 2020.05.10 [알고리즘/자바스크립트] Codility, OddOccurrencesInArray 문제 풀이 (484) 2019.11.29 [알고리즘/자바스크립트] Codility, Binary Gap 문제 풀이 (609) 2019.11.27 [알고리즘/자바스크립트] 배열 뒤집기 (Reverse Array) (969) 2019.09.04 COMMENT