BFS - 단지번호붙이기 [2667번]
2022. 7. 14. 13:16ㆍ2022/BaekJoon_알고리즘
Queue 를 이용한 BFS로 풀이한 문제이다.
from collections import deque
N = int(input())
graph = []; visited = []
for _ in range(N):
tmp = list(map(int, input()))
graph.append(tmp)
visited.append(list(map(lambda x : x == 1, tmp)))
result = []
dx = [1, 0, -1, 0]; dy = [0, 1, 0, -1]
for i in range(N):
for j in range(N):
if graph[i][j] == 1 and visited[i][j] == True:
q = deque([(i, j)])
num = 1
visited[i][j] = False
while q:
x, y = q.popleft()
for n in range(4):
nx = dx[n]+x; ny = dy[n]+y
if 0<=nx<N and 0<=ny<N and graph[nx][ny] == 1 and visited[nx][ny] == True:
visited[nx][ny] = False
q.append([nx, ny])
num+=1
result.append(num)
result.sort()
print(len(result))
for r in result:
print(r)
'2022 > BaekJoon_알고리즘' 카테고리의 다른 글
DFS - 촌수계산 [2644번] (0) | 2022.07.17 |
---|---|
BFS - 숨바꼭질 [1697번] (0) | 2022.07.15 |
BFS - 미로 탐색 [2178번] (0) | 2022.07.14 |
DFS - 연결 요소의 개수[11724번] (0) | 2022.04.18 |
DFS - DFS와BFS[1260번] (0) | 2022.04.17 |