반응형
https://www.acmicpc.net/problem/2667
섬을 세는 유명한 문제에 갯수까지 세는 것이 추가된 문제다.
DFS로 탐색하면서
미지의 단지를 발견할때 마다 island에 1을 더해주고 ( 단지 개수)
집을 발견할때마다 1을 더해주는 식으로 단지 내 집 개수를 구하였다.
n = int(input())
table = []
for i in range(n):
table.append(list(input()))
island = 0
houses = []
def check(x,y):
if 0 <= x < n and 0 <= y < n and table[x][y] == '1':
table[x][y]='0'
a = check(x-1,y)
b = check(x+1,y)
c = check(x,y-1)
d = check(x,y+1)
return 1+a+b+c+d
else:
return 0
for x in range(n):
for y in range(n):
if table[x][y] == '1':
island +=1
houses.append(check(x,y))
print(island)
for h in sorted(houses):
print(h)
댓글