59. Spiral Matrix II

LONGNEW·2023년 9월 10일
0

CP

목록 보기
154/155

https://leetcode.com/problems/spiral-matrix-ii/description/?envType=featured-list&envId=top-google-questions?envType=featured-list&envId=top-google-questions

input :

  • n

output :

  • 주어지는 n * n 행렬에 1 ~ n까지의 숫자를 조건에 맞게 나열하시오.

조건 :


Solution explain : Solution1

idea

  • dx, dy 방식으로 0, 0에서 부터 행렬을 순회하며 값을 집어넣는다.
  • index out을 주의하면서 구현하자.

주의

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        dx = [0, 1, 0, -1]
        dy = [1, 0, -1, 0]
        idx = 0

        cnt = 1
        x, y = 0, 0
        ret = [[0] * n for _ in range(n)]

        for i in range(n * n):
            ret[x][y] = cnt
            cnt += 1

            nx, ny = x + dx[idx], y + dy[idx]
            if nx < 0 or nx >= n or ny < 0 or ny >= n or ret[nx][ny] != 0:
                idx += 1
                if idx == 4: idx = 0
            
            x, y = x + dx[idx], y + dy[idx]
        
        return ret
        

0개의 댓글