728x90
반응형
DFS & BFS 문제이다. 나름 짧게 잘 구현한 것 같다. 이제 좀 DFS, BFS에 익숙해진 것 같다!!
DFS 풀이
import sys
from copy import deepcopy
sys.setrecursionlimit(10000)
def dfs(y, x, color):
t[y][x] = '0'
for dy, dx in d:
Y, X = y+dy, x+dx
if (0 <= Y < N) and (0 <= X < N) and t[Y][X] in color:
dfs(Y, X, color)
N = int(input())
graph = [list(input()) for _ in range(N)]
d = [(-1, 0), (1, 0), (0, -1), (0, 1)]
for colors in [['R', 'G', 'B'], ["RG", 'B']]:
t, cnt = deepcopy(graph), 0
for i in range(N):
for j in range(N):
for color in colors:
if t[i][j] in color:
dfs(i, j, color)
cnt += 1
print(cnt, end=' ')
BFS 풀이
from collections import deque
from copy import deepcopy
def bfs(y, x, color):
queue = deque()
queue.append((y, x))
while queue:
y, x = queue.popleft()
for dy, dx in d:
Y, X = y+dy, x+dx
if (0 <= Y < N) and (0 <= X < N) and t[Y][X] in color:
t[Y][X] = '0'
queue.append((Y, X))
N = int(input())
graph = [list(input()) for _ in range(N)]
d = [(-1, 0), (1, 0), (0, -1), (0, 1)]
for colors in [['R', 'G', 'B'], ["RG", 'B']]:
t, cnt = deepcopy(graph), 0
for i in range(N):
for j in range(N):
for color in colors:
if t[i][j] in color:
bfs(i, j, color)
cnt += 1
print(cnt, end=' ')
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2644번 촌수계산(python) (0) | 2021.03.11 |
---|---|
백준 알고리즘 11725번 트리의 부모 찾기(python) (0) | 2021.03.11 |
백준 알고리즘 11724번 연결 요소의 개수(python) (0) | 2021.03.11 |
백준 알고리즘 1302번 베스트셀러(python) (0) | 2021.03.11 |
백준 알고리즘 11557번 Yangjojang of The Year(python) (0) | 2021.03.11 |