반응형
변수가 많아져서 약간 복잡했다.
bfs 방식으로 해결할 수 있었다.
from collections import deque
from sys import stdin
def bfs(x,y):
dx = [1,-1,0,0]
dy = [0,0,1,-1]
cnt = 0
queue = deque()
queue.append((x,y))
maps[x][y] = '0'
visited.append((x,y))
while queue:
now=queue.popleft()
cnt += 1
for i in range(4):
nx = now[0] + dx[i]
ny = now[1] + dy[i]
if (0 <= nx < n) and (0 <= ny < n):
if maps[nx][ny] == '1' and ((nx, ny) not in visited):
maps[nx][ny] = '0'
queue.append((nx, ny))
visited.append((nx, ny))
return cnt
n = int(input())
maps = [list(stdin.readline()) for _ in range(n)]
visited = []
total = 0
result = []
for i in range(n):
for j in range(n):
if maps[i][j] == '1':
result.append(bfs(i,j))
total += 1
result.sort()
print(total)
for i in range(total):
print(result[i])
반응형
'알고리즘 > dfs,bfs' 카테고리의 다른 글
[파이썬🐍] 백준 2583 : 영역 구하기 (0) | 2021.04.09 |
---|---|
[파이썬🐍] 백준 11724 : 연결 요소의 개수 (0) | 2021.04.08 |
[파이썬🐍] 백준 2606 : 바이러스 (0) | 2021.04.08 |
[파이썬🐍] 백준 2178 : 미로 탐색 (0) | 2021.04.07 |
[파이썬🐍] 백준 1260 : DFS와 BFS (0) | 2021.04.07 |
댓글