https://leetcode.com/problems/shift-2d-grid/description/
M,N를 각각 grid의 높이와 너비로 한다.
k의 값이 매우 커질 수 있읜 H*W로 나눈 나머지로 바꾼다.
2차원 배열을 1차원으로 폈을 때의 위치(m*N + w)를 이용해 k만큼 이동시킨 후, 이것을 다시 2차원으로 만든다.
class Solution:
def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int]]:
M,N = len(grid), len(grid[0])
res = [[0 for _ in range(N)] for _ in range(M)]
k %= (M*N)
for m in range(M):
for n in range(N):
temp = m*N + n + k
dm, dn = temp//N, temp%N
res[dm%M][dn%N]= grid[m][n]
return res