2018-11-17
[JS] Missing Integer
MEDIUM

개요

길이가 N인 array A가 주어집니다. 배열회전이란, 각 요소가 오른쪽으로 한 칸씩 이동하는 것을 뜻합니다.

예시

  • A = [3, 8, 9, 7, 6]이 한번 회전하면 [6, 3, 8, 9, 7]이 됩니다.
  • A = [3, 8, 9, 7, 6],
    K = 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] 순서로 회전합니다.
  • A = [1, 2, 3, 4], K = 4라면, [1, 2, 3, 4]가 됩니다.

문제

배열 A를 K만큼 회전하고 반환하세요.

제한

  • N과 K는 0 ~ 100 범위를 가진 integer입니다.
  • 배열 A의 요소는 -1000 ~ 1000 범위를 가진 integer입니다.

풀이

function solution(A, K) {
  if (A.length === K || K === 0) {
    return A
  }
  K = K % A.length
  const before = A.splice(-1 * K)
  return [...before, ...A]
}

스코어 100%

설명

배열 [1, 2, 3, 4]가 4번 회전하면 결국 같은 값을 반환하는것에 주목하세요. 길이가 4이기 때문에, 4배수로 회전하면 결국 같은 값이 됩니다.

  • K를 A.length로 나눈 나머지 만큼만 회전하면 됩니다.:
K = K % A.length
  • 배열을 재구성 할 때에는 A의 끝에서 K만큼 떼어서, 뗀 값을 앞에 두고 남은 값을 뒤에 두면 됩니다.:
const before = A.splice(-1 * K)
return [...before, ...A]