leetcode(리트코드)-130 Surrounded Regions(python)
leetcode(리트코드)-130 Surrounded Regions(python)
leetcode 130 - Surrounded Regions 문제입니다.
1. 문제
https://leetcode.com/problems/surrounded-regions/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
Top Interview 문제입니다.
4. 문제 해석
- board가 주어집니다. 해당 board에서 ‘X’로 둘러쌓인 ‘O’를 전부 ‘X’로 바꿔서 리턴합니다.
5. code
코드설명
- 경계선과 이어진 ‘O’를 찾아서 체크해줍니다. 맵 안에서 서로 이어진 ‘O’들은 어차피 ‘X’로 바꿔지기 때문입니다.
- 체크된 값은 ‘O’로 아닌 값은 ‘X’로 바꿔 정답을 리턴합니다.
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from collections import deque
class Solution:
def solve(self, board: List[List[str]]) -> None:
res = board
row = len(board)
col = len(board[0])
v = [0] * row
for i in range(row):
v[i] = [0] * col
queue = deque()
dx = [-1,0,1,0]
dy = [0,-1,0,1]
for i in range (col) :
if board[0][i] == 'O':
queue.append([0,i])
if board[row-1][i] =='O':
queue.append([row-1,i])
for i in range (row):
if board[i][0] == 'O' :
queue.append([i,0])
if board[i][col-1] =='O':
queue.append([i,col-1])
while queue :
x,y = queue.popleft()
v[x][y] = 1
for i in range(4) :
newX,newY = x + dx[i], y+dy[i]
if 0<=newX and newX <row and 0<=newY and newY<col and v[newX][newY] == 0 and board[newX][newY] =='O':
v[newX][newY] = 1
queue.append([newX,newY])
for i in range(row) :
for j in range(col):
if v[i][j] == 0 :
res[i][j] = 'X'
else :
res[i][j] = 'O'
return res
"""
Do not return anything, modify board in-place instead.
"""
6. 결과 및 후기, 개선점
python 45% 140ms
This post is licensed under CC BY 4.0 by the author.