https://youtu.be/fei4bJQdBUQ?si=woKf1nJYZF68r7P2
class Solution:
def gameOfLife(self, board: List[List[int]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
# 1 : live if 2,3 else die
# 0 : live if 3 else die
# Original | New | State
# 0 | 0 | 0
# 1 | 0 | 1
# 0 | 1 | 2
# 1 | 1 | 3
ROWS, COLS = len(board), len(board[0])
def countNeighbors(r, c):
nei = 0
for i in range(r-1, r+2): # 현재 셀의 상하좌우 범위 탐색
for j in range(c-1, c+2):
# 현재 셀 제외 및 범위를 벗어난 셀 제외
if ((i == r and j == c) or
i < 0 or j < 0 or
i == ROWS or j == COLS):
continue
# 현재 셀 상태가 1 또는 3이면 살아있는 셀로 간주
if board[i][j] in [1, 3]:
nei += 1
return nei
for r in range(ROWS):
for c in range(COLS):
nei = countNeighbors(r, c)
if board[r][c]: # 현재 셀이 살아있는 경우
if nei in [2, 3]: # 조건 만족 시 생존
board[r][c] = 3
else: # 현재 셀이 죽은 경우
if nei == 3: # 조건 만족 시 탄생
board[r][c] = 2
for r in range(ROWS):
for c in range(COLS):
if board[r][c] == 1: # 죽음 유지
board[r][c] = 0
elif board[r][c] in [2, 3]: # 생명 탄생 또는 생존
board[r][c] = 1
아직 이해 안감!!
'LeetCode > Top Interview 150' 카테고리의 다른 글
20. Valid Parentheses (0) | 2024.12.02 |
---|---|
228. Summary Ranges (0) | 2024.12.02 |
73. Set Matrix Zeroes (0) | 2024.12.02 |
219. Contains Duplicate II (0) | 2024.12.01 |
202. Happy Number (0) | 2024.12.01 |