์ฝ”ํ…Œ์ค€๋น„

<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