https://www.acmicpc.net/problem/2667
2667번: 단지번호붙이기
<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여
www.acmicpc.net
from collections import deque
def BFS(i, j):
global matrix, cnt
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
q = deque([[i,j]])
matrix[i][j] = 0
count = 1
while q:
y, x = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<N and 0<=ny<N and matrix[ny][nx]:
q.append([ny, nx])
matrix[ny][nx] = 0
count += 1
cnt.append(count)
N = int(input())
matrix = []
cnt = []
for i in range(N):
matrix.append(list(map(int, input())))
for i in range(N):
for j in range(N):
if matrix[i][j] == 1:
BFS(i,j)
print(len(cnt))
cnt.sort()
for c in cnt:
print(c)
'코딩테스트 준비 > [백준]' 카테고리의 다른 글
[백준] 5427번 불 - 파이썬 (0) | 2021.06.20 |
---|---|
[백준] 7576번 토마토 - 파이썬 (0) | 2021.06.20 |
[백준] 1743번 음식물 피하기 (0) | 2021.06.10 |
[백준] 2178 미로탐색 (0) | 2021.06.10 |
[백준] 2644번 촌수계산 파이썬 (0) | 2021.06.10 |