LeetCode - 189(JS, Medium)

진영·2024년 4월 10일
0

LeetCode

목록 보기
12/16

189. Rotate Array

문제

설명

정수형 배열 numsk번 오른쪽으로 회전시키면 되는 문제다.

풀이

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var rotate = function(nums, k) {
    if(nums.length === 1) return;
    if(k === 0) return;
    
    let arr = JSON.parse(JSON.stringify(nums));
    let temp = k % arr.length;
    
    let idx = arr.length - temp;
    for(let i = 0; i < arr.length; i++){
        nums[i] = arr[(idx+i) % arr.length];
    }
};

그냥 원소를 한 칸씩 밀기엔 시간복잡도가 O(nums.length * k) 이 되기 때문에
원본 배열을 복사해두고 knums.length보다 클 경우 (k % nums.length)번 회전한 결과와 같기에 knums.length로 나눈 나머지로 바꿨다.
Example 1Example 2를 보면 output이 원본 배열의 nums.length - k번째부터 하나씩 넣은 결과와 같이 때문에 이 점에 초점을 두고 nums의 원소를 변경했다.
arr를 참조하면서 IndexOutOfBoundsException가 일어나지 않게 arr.length로 나눈 나머지를 넣었다.

profile
개발하고 만드는걸 좋아합니다

0개의 댓글

관련 채용 정보