[ 2023-08-02 ๐ŸŽซ TIL ]

Burkeyยท2023๋…„ 8์›” 2์ผ
0

TIL

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

๋ฐฑ์ค€ 1926๋ฒˆ ํŒŒ์ด์ฌ


๋ฌธ์ œ


์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

n, m = map(int, input().split())
feild = []

for _ in range(n):
  feild.append(list(map(int, input().split())))

move = [(0,1), (-1, 0), (1, 0), (0, -1)]
# ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ
big, size, cnt = 0, 0, 0
visited = [[False] * m for _ in range(n)]

for i in range(n):
  for j in range(m):
    if (not visited[i][j]) and (feild[i][j] == 1):
      cnt += 1 # ์„ฌ์˜ ๊ฐฏ์ˆ˜
      size = 1
      q = deque([(i, j)])
      visited[i][j] = True
      
      while q:
        xi, xj = q.popleft()
        
        for mi, mj in move:
          ci, cj = (xi + mi), (xj + mj)
          if 0<=ci<n and 0<=cj<m : 
          # ์ด๋™๊ฐ€๋Šฅ ์œ„์น˜๊ฐ€ n x m ๋ฒ”์œ„ ๋‚ด์—์„œ
            if (feild[ci][cj] == 1) and (not visited[ci][cj]):
            # ์„ฌ์ด ์œ„์น˜ํ•ด ์žˆ์œผ๋ฉด์„œ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ด ์—†์„ ๋•Œ
              q.append((ci, cj)) # ๋‹ค์Œ ๋ฐฉ๋ฌธํ•œ๋‹ค.
              size += 1 # ์„ฌ์˜ ํฌ๊ธฐ ์ธก์ •
              visited[ci][cj] = True
      if size > big: # ๊ฐ€์žฅ ํฐ ์„ฌ์˜ ํฌ๊ธฐ๋ฅผ ์œ„ํ•œ ๋น„๊ฒจ
        big = size
        
print(cnt)
print(big)
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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