https://www.acmicpc.net/problem/2667
일반적인 BFS문제였다.
graph 입력받고 4방향으로 BFS 돌리면 된다.
from collections import deque
N = int(input())
graph = []
result = []
for _ in range(N):
temp = list(input())
graph.append(temp)
#방향
dx = [0,-1,0,1]
dy = [1,0,-1,0]
def bfs(start):
queue = deque([start])
graph[start[0]][start[1]] = 2
count = 1
#queue가 빌 때 까지
while queue:
x,y = queue.popleft()
for i in range(4):
current_x,current_y = x + dx[i], y + dy[i]
if 0 <= current_x < N and 0 <= current_y < N and graph[current_x][current_y] == '1':
queue.append((current_x,current_y))
count += 1
graph[current_x][current_y] = graph[x][y] + 1
result.append(count)
bfs_count = 0
for i in range(N):
for j in range(N):
if graph[i][j] == '1':
bfs((i,j))
bfs_count += 1
#출력부
print(bfs_count)
result.sort()
for i in result:
print(i)
'백준' 카테고리의 다른 글
[백준] 6064번: 카잉달력(파이썬) (1) | 2024.12.28 |
---|---|
[백준] 5525번: IOIOI (파이썬) (2) | 2024.12.27 |
[백준] 1389번: 케빈 베이컨의 6단계 법칙 (1) | 2024.12.20 |
[백준] 21736번: 헌내기는 친구가 필요해(파이썬) (1) | 2024.12.12 |
[백준] 1541번: 잃어버린 괄호 (2) | 2024.12.11 |