๐งฎ PS
๋ฐฑ์ค (boj) ํ์ด์ฌ - 2667 : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
Newmon
2021. 8. 25. 18:37
#๋ฌธ์ ๋งํฌ : https://www.acmicpc.net/problem/2667
2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net
#๋์ด๋ : Silver 1
#๋ถ๋ฅ: DFS
#์ฝ๋(Python)
import sys
sys.setrecursionlimit(10000)
n = int(input())
map_ = []
area_cnt = 0
house_cnts = []
def is_valid(x,y):
if x >= 0 and y >= 0 and x < n and y < m:
return True
return False
def dfs(x,y):
global house_cnt
if not is_valid(x,y) :
return False
if map_[x][y] == 1:
map_[x][y] = 0
dfs(x+1,y)
dfs(x-1,y)
dfs(x,y+1)
dfs(x,y-1)
house_cnt += 1
for _ in range(n):
map_.append(list(map(int, input())))
m = len(map_[0])
for x in range(n):
for y in range(m):
house_cnt = 0
if map_[x][y] == 1:
area_cnt += 1
dfs(x,y)
house_cnts.append(house_cnt)
print(area_cnt)
for cnt in sorted(house_cnts):
print(cnt)