행렬 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;
};

'알고리즘' 카테고리의 다른 글
| [LeetCode/Algorithm] 3345. Smallest Divisible Digit Product I (0) | 2026.08.06 |
|---|---|
| 들어만봤던, 그렇게 유명하다던 LeetCode 가입 26.08.05(수) (0) | 2026.08.05 |