๋ฐฑ์ค 2667๋ฒ ํ์ด์ฌ
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
feild = []
visited = [[0] * n for _ in range(n)]
for _ in range(n):
feild.append(list(map(int, input().strip())))
result = []
move = ((-1,0),(1,0),(0,-1), (0,1))
# ์ธ๋ฑ์ค ๊ธฐ์ค (์, ํ, ์ข, ์ฐ)
def bfs(si, sj):
q = deque([(si, sj)])
visited[si][sj] = 1
cnt = 1
while q :
ci, cj = q.popleft()
for di, dj in move: # ์ํ์ข์ฐ ์ดํผ๊ธฐ์ 4๋ฒ ๋ฐ๋ณต
ni, nj = ci+di, cj+dj
# ํ์ฌ ์์น์์ ์ํ์ข์ฐ ์ขํ๋ฅผ ํ์ธํ๋ค.
if ((0<=ni<n) and (0<=nj<n) and
visited[ni][nj] == 0 and feild[ni][nj] == 1):
# ni,nj ๊ฐ์ด ๋๋น(n)์ ๋ฒ์ด๋์ง ์๊ณ ์ํ์ข์ฐ ์ค์ ๋ฐฉ๋ฌธํ์ง
# ์์ ๊ณณ์ด ์์ผ๋ฉด ๊ทธ ํด๋น ์ขํ๋ก ์ด๋ํ์ฌ ์ดํ๋ค.
q.append((ni, nj))
visited[ni][nj] = 1
cnt += 1
# ์ํ์ข์ฐ์ ์ด์ 0๋ฐ์ ์์ผ๋ฉด ๋ฐ๋ณต๋ฌธ ๋
return cnt
for i in range(n):
for j in range(n):
if feild[i][j] == 1 and visited[i][j] == 0 :
result.append(bfs(i, j))
print(len(result))
result.sort()
for dangi in result:
print(dangi)
์ฒ์์ move = ((-1,0),(1,0),(0,-1), (0,1))
์ด ๋ถ๋ถ์ด ์ดํด๋์ง ์์์ ๊ณ ์ํ์ง๋ง ๊ณ์ ๋ณด๊ณ ์ฝ๋๋ฅผ ์ง์ ํ์ดํ ํด๋ณด๋ฉด์ ํ์ธํด๋ณด๋ ์ดํด ํ ์ ์์์ต๋๋ค.
์ด ํ์ด๋ฅผ ์ฒ์ ์๊ฐํ์ ๋ถ ์ฒ์ฌ์ธ๋ฏ...๐ฅน