알고리즘/dfs,bfs
[파이썬🐍] 백준 2667 : 단지 번호 붙이기
코딩개미뚠뚠
2021. 4. 7. 17:54
반응형
변수가 많아져서 약간 복잡했다.
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])
반응형