알고리즘

[LeetCode/Algorithm] 1260. Shift 2D Grid

개발코딩기록 2026. 8. 9. 22:36

행렬 grid(mxn) 이 주어질 때 k 칸 만큼 오른쪽으로 순환 right shift한 행렬을 return 하기

 

문제 해결 아이디어

- Grid 배열을 flat() 으로 펼쳐서, slice로 _k 칸 밀어준다.

- 그냥 k 갖다 썼다가 맞왜틀 당함. k가 전체 배열 m x n 값보다 큰 경우였음. const _k = k % mn 으로 예방한다

 

/**
 * @param {number[][]} grid
 * @param {number} k
 * @return {number[][]}
 */
var shiftGrid = function(grid, k) {
    const m = grid.length;
    const n = grid[0].length;
    const mn = m * n;
    
    const flatten = grid.flat()
    const _k = k % mn;
    const raw = [...flatten.slice(mn-_k, mn), ...flatten.slice(0, mn-_k)]
    const out = [];
    for (let i = 0; i < m ; i++) {
        const arr = [];
        for (let j = 0; j < n; j++) {
            arr.push(raw[i * n + j])
        }
        out.push(arr);
    };
    return out;
};