리트코드
리트코드 130 Surrounded Regions (파이썬)
MC류짱
2022. 10. 23. 15:50
https://leetcode.com/problems/surrounded-regions/submissions/
Surrounded Regions - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
풀이 및 해설(주석)
class Solution(object):
def solve(self, board):
N, M = len(board), len(board[0])
def dfs(r, c):
if r < 0 or c < 0 or r == N or c == M or board[r][c] != "O":
return
board[r][c] = "T"
dfs(r + 1, c)
dfs(r - 1, c)
dfs(r, c+1)
dfs(r, c-1)
# 1. X로 둘려 쌓여 있지 않은 O를 캡처 (O -> T)로 변경 (테두리에 있는 O)
for i in range(N):
for j in range(M):
if board[i][j] == "O" and (i in [0, N-1] or j in [0, M-1]):
dfs(i, j)
# 2. X로 둘려 쌓여 있는 O를 X로 변경
for i in range(N):
for j in range(M):
if board[i][j] == "O":
board[i][j] = "X"
# 3. T로 변경한 값을 O로 바꾸기
for i in range(N):
for j in range(M):
if board[i][j] == "T":
board[i][j] = "O"