【Codility Lesson2】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 .
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.
어휘 메모
integer
정수 rotate array A K times
arrayA를 K회 회전 Write a function:
(:아래) 함수 작성 Assume that:
(that:다음을) 가정하십시오 해법
1. pop() 및 unshift() 사용
pop() 메서드는 배열에서 마지막 요소를 제거하고 제거한 요소를 반환합니다.
unshift() 메서드는 배열의 시작 부분에 하나 이상의 요소를 추가하고 새 배열의 길이를 반환 값으로 반환합니다.
또, pop(), unshift() 모두 파괴적인 메소드 (=원래의 배열을 직접 변화시킨다)인 것에 유의해 주세요.
배열 A, 회전수 K를 인수로 한 함수를 만듭니다.
변수 i에 초기값으로 0을 대입합니다.
A.pop()로 배열 A의 마지막 요소를 꺼내 A.unshift(A.pop())로 배열 A의 마지막 요소를 첫 번째 요소로 추가한 새로운 배열 A를 만듭니다. 이것을 while 문으로 K 회 반복합니다.
function solution(A, K) {
// write your code in JavaScript (Node.js 8.9.4)
let i = 0;
while(i < K) {
A.unshift(A.pop())
i++
}
return A
}
for문을 사용할 때는 이쪽.
function solution(A, K) {
// write your code in JavaScript (Node.js 8.9.4)
for(let i = 0; i < K; i++) {
A.unshift(A.pop())
}
return A
}
2.pop() 대신 slice() 사용
function solution(A, K) {
if (A.length >= K) {
A.unshift(...A.splice(-K));
} else {
let i = 0;
while (i < K) {
A.shift(A.splice(-1));
i++;
}
}
return A;
}
// line 4: To add the elements of that array to the start of nums (instead of the array itself) we use the spread operator: ...nums.splice(-K)
참고
알고리즘 도감 그림에서 보는 26개의 알고리즘 세계에서 가장 강력한 9 알고리즘 어쨌든! 알고리즘 최초의 JavaScript 제3판 ―ES2015 이후의 최신 웹 개발 철저한 예해 로얄 영문법 개정 신판
Reference
이 문제에 관하여(【Codility Lesson2】CyclicRotation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/newt0/items/1c0a3487f8944a37c0ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)