์ฝํ
์ค๋น
<dfs bfs>๋ฐฑ์ค 2667๋ฒ. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
์๋๋ค
2022. 7. 31. 20:36
from collections import deque
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
cnt_lst = []
n = int(input())
graph = [ list(map(str, input())) for _ in range(n) ]
def bfs(x,y):
cnt = 1
q = deque()
q.append( (x,y) )
graph[x][y] = 0
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<n and 0<=ny<n:
if graph[nx][ny] == "1": #์ง์ด ์์ผ๋ฉด
q.append((nx,ny))
graph[nx][ny] = 0
cnt += 1
cnt_lst.append(cnt)
for i in range(n):
for j in range(n):
if graph[i][j] == "1" : #์ง์ด ์์ผ๋ฉด
bfs(i,j)
print(len(cnt_lst))
cnt_lst.sort()
print(*cnt_lst, sep = "\n")
https://www.acmicpc.net/problem/2667
2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net