[baekjoon]python #2667 ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
https://www.acmicpc.net/problem/2667
2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net
import sys
input = sys.stdin.readline
from collections import deque
n = int(input())
arr = [list(map(int,input().strip())) for _ in range(n)]
#์ง์ ์
answer = []
#๋จ์ง ์
cnt=0
def bfs(y,x):
queue = deque()
queue.append((y,x))
# ์ด๋ฏธ ๋ค๋
๊ฐ ๊ณณ ์ฒดํฌ
arr[y][x] = 0
# ์ง์ ์ ์ฒดํฌ
bfs_cnt = 0
while queue:
ny,nx = queue.popleft()
directy = [-1,1,0,0]
directx = [0,0,-1,1]
for i in range(4):
dy = directy[i] + ny
dx = directx[i] + nx
if 0<=dy<n and 0<=dx<n:
if arr[dy][dx]==1:
#๋ค๋
๊ฐ ๊ณณ ์ฒดํฌ
arr[dy][dx] = 0
queue.append((dy,dx))
bfs_cnt+=1
answer.append(bfs_cnt)
for i in range(n):
for j in range(n):
if arr[i][j] == 1:
bfs(i,j)
cnt+=1
#์ค๋ฆ์ฐจ์
answer.sort()
#์ถ๋ ฅ
print(cnt)
for a in answer:
print(a)
'Problem Solving > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[baekjoon]python #1697 ์จ๋ฐ๊ผญ์ง (0) | 2023.01.25 |
---|---|
[baekjoon]python #2178 ๋ฏธ๋กํ์ (0) | 2023.01.25 |
[baekjoon]python #5635 ์์ผ (0) | 2023.01.20 |
[baekjoon]python #1764 ๋ฃ๋ณด์ก (0) | 2023.01.11 |
[baekjoon]python #9095 1, 2, 3 ๋ํ๊ธฐ (0) | 2023.01.11 |
๋๊ธ