[백준 10026 적록색약] 파이썬 풀이 🦄
문제
동일한 값에 대해서 bfs/dfs를 통하여 탐색하는 기본 문제
Keypoints
- 두 가지 버전에 대해서 탐색해야 하므로, board 를 Copy한다.
Solution
dx = [0,0,1,-1]
dy = [1,-1,0,0]
def bfs3(board, x,y):
color = board[y][x]
board[y][x]=0
queue = [(x,y)]
while queue:
x,y = queue.pop(0)
for i in range(4):
nx, ny = x+dx[i], y+dy[i]
if 0<=nx<n and 0<=ny<n and board[ny][nx] == color:
queue.append((nx,ny))
board[ny][nx]=0
def bfs2(board, x,y):
color = board[y][x]
board[y][x]=0
if color=="G" or color=="R":
color_list=["R", "G"]
else:
color_list =["B"]
queue = [(x,y)]
while queue:
x,y = queue.pop(0)
for i in range(4):
nx, ny = x+dx[i], y+dy[i]
if 0<=nx<n and 0<=ny<n and board[ny][nx] in color_list:
queue.append((nx,ny))
board[ny][nx]=0
def count(board, bfs):
count = 0
for x in range(n):
for y in range(n):
if board[y][x] != 0:
bfs(board, x,y)
count +=1
return count
import copy
n = int(input())
board = [list(input().strip()) for i in range(n)]
board2 = copy.deepcopy(board)
a = count(board,bfs3)
b = count(board2,bfs2)
print(a, b)
References
'프로그래밍' 카테고리의 다른 글
[백준 1707 이분 그래프] - 파이썬 풀이 🦄 (0) | 2021.02.18 |
---|---|
[백준 1922 네트워크 연결] - 파이썬 풀이 🦄 (0) | 2021.02.17 |
[프로그래머스 땅따먹기] 파이썬 풀이 🦄 (0) | 2021.02.17 |
Tensorboard not found error (0) | 2021.02.16 |
[프로그래머스 H-index] 파이썬 풀이 (0) | 2021.02.16 |