[LeetCode] 54. Spiral Matrix (medium, python)

2024. 1. 9. 00:29· Coding Test/Python
목차
  1. 아이디어
  2. 전체 코드

https://leetcode.com/problems/spiral-matrix/description/?envType=study-plan-v2&envId=top-interview-150

 

Spiral Matrix - LeetCode

Can you solve this real interview question? Spiral Matrix - Given an m x n matrix, return all elements of the matrix in spiral order.   Example 1: [https://assets.leetcode.com/uploads/2020/11/13/spiral1.jpg] Input: matrix = [[1,2,3],[4,5,6],[7,8,9]] Outpu

leetcode.com

아이디어

방향 벡터(dv)를 사용해서 풀었다.

시작점(0,0)에서 우측 방향으로 이동하다가 범위를 벗어나거나 이미 방문한 곳(visited[nx][ny] == 1)이면 방향을 시계방향으로 90도 돌려준 뒤(d = (d+1)%4) 해당 방향으로 이동하도록 했다. 

 

전체 코드

# 12:11 ~ 12:24(13")

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        dv = [(-1, 0), (0, 1), (1, 0), (0, -1)]
        N, M = len(matrix), len(matrix[0])
        visited = [[0 for _ in range(M)] for y in range(N)]

        x, y, d = 0, 0, 1
        visited[0][0] = 1
        answer = [matrix[0][0], ]

        while True:
            if len(answer) == N*M:
                break
            
            nx = x + dv[d][0]
            ny = y + dv[d][1]

            if nx < 0 or nx >= N or ny < 0 or ny >= M or visited[nx][ny] == 1:
                d = (d+1) % 4
                continue
            
            answer.append(matrix[nx][ny])
            visited[nx][ny] = 1
            x, y = nx, ny
            
        return answer

'Coding Test > Python' 카테고리의 다른 글

[프로그래머스] 폰켓몬(level1, python)  (0) 2024.01.10
[프로그래머스] 완주하지 못한 선수 (level1, python)  (0) 2024.01.10
[백준] 17779번: 게리맨더링 2 (골드3, 파이썬)  (1) 2024.01.08
[백준] 17140번: 이차원 배열과 연산 (골드4, 파이썬)  (0) 2024.01.06
[백준] 17144번: 미세먼지 안녕! (골드4, 파이썬)  (1) 2024.01.05
  1. 아이디어
  2. 전체 코드
'Coding Test/Python' 카테고리의 다른 글
  • [프로그래머스] 폰켓몬(level1, python)
  • [프로그래머스] 완주하지 못한 선수 (level1, python)
  • [백준] 17779번: 게리맨더링 2 (골드3, 파이썬)
  • [백준] 17140번: 이차원 배열과 연산 (골드4, 파이썬)
lim.dev
lim.dev
* 깃허브: https://github.com/Ellie010707
lim.dev
코딩림
lim.dev
전체
오늘
어제
  • 분류 전체보기 (205)
    • Network (6)
    • Backend (31)
      • Django (8)
      • Spring Boot (22)
    • Frontend (3)
    • Coding Test (107)
      • Python (93)
      • Java (1)
      • C_C#_C++ (4)
      • SQL (8)
    • Security (40)
      • 해커스쿨_FTZ (19)
      • VM (6)
      • CodeEngn (11)
      • Linux (4)
    • Project (2)
    • etc (12)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • hacking
  • abex
  • 해커스쿨
  • ftz writeup
  • 코드엔진
  • CodeEngn
  • ftz풀이
  • reversing
  • 리눅스마스터
  • crackme
  • ftz write up
  • 리눅스
  • 해커스쿨ftz
  • linux
  • ftz
  • 리버서
  • 해킹
  • ftz 풀이
  • 리버싱
  • stolenbyte

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
lim.dev
[LeetCode] 54. Spiral Matrix (medium, python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.