https://www.acmicpc.net/problem/2667
import sys
# 정 사각형 모양의 지도 | 1: 집이 있는 곳 | 2: 집이 없는 곳
# 지도를 입력하여 단지수를 출력
# 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
n = int(sys.stdin.readline())
Rectangle = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
li = list(sys.stdin.readline())
for j in range(n):
Rectangle[i][j] = int(li[j])
step = 0
cnt = 0
def dfs(a, b):
global cnt
Rectangle[a][b] = 0
cnt += 1
for i in range(4):
x = a + dx[i]
y = b + dy[i]
if 0 <= x < n and 0 <= y < n:
if Rectangle[x][y] == 1:
dfs(x, y)
ans = list()
for i in range(n):
for j in range(n):
cnt = 0
if Rectangle[i][j] == 1:
step += 1
dfs(i, j)
ans.append(cnt)
print(step)
ans.sort()
for i in ans:
print(i)
'자료구조 & 알고리즘 관련 > 코딩테스트' 카테고리의 다른 글
나이트의 이동 (0) | 2023.02.07 |
---|---|
숨바꼭질 (0) | 2023.02.07 |
바이러스 (0) | 2023.02.05 |
알고리즘 수업 - 너비 우선 탐색 2 (0) | 2023.02.05 |
알고리즘 수업 - 너비 우선 탐색 1 (0) | 2023.02.05 |