본문 바로가기

백준

[백준] 2667번: 단지번호붙이기 (파이썬)

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)

결과 오름차순인 거 까먹고 정렬안함이슈