[ 2023-07-22 ๐Ÿฆ– TIL ]

Burkeyยท2023๋…„ 7์›” 22์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
126/157

๋ฐฑ์ค€ 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)) ์ด ๋ถ€๋ถ„์ด ์ดํ•ด๋˜์ง€ ์•Š์•„์„œ ๊ณ ์ƒํ–ˆ์ง€๋งŒ ๊ณ„์† ๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ํƒ€์ดํ•‘ ํ•ด๋ณด๋ฉด์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ํ’€์ด๋ฅผ ์ฒ˜์Œ ์ƒ๊ฐํ•˜์‹  ๋ถ„ ์ฒœ์žฌ์ธ๋“ฏ...๐Ÿฅน

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€