2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net
์ค๋ช

<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. 1๋ก ์ฐ๊ฒฐ๋ ๊ณณ์ ํ๋์ ๋จ์ง๋ค. (๋๊ฐ์ ์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค.) <๊ทธ๋ฆผ 2>๋ <๊ทธ๋ฆผ 1>์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค. ์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ์ด
โ BFS ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ
https://dev-cloud.tistory.com/161 -> ์ ์ฌํ ๋ฌธ์ ์ด๋ค. BFS์ ๊ด๋ จํด์ ๋ ์์ธํ ์ค๋ช ์ด ์์ผ๋ ๋ด๋ณด์.
Solution
import sys
input = sys.stdin.readline #์
์ถ๋ ฅ ํฅ์
from collections import deque #๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ํ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํจ)
# ์ข์ฐ์ํ
dx = [-1, 1, 0, 0]
dy = [0, 0, 1, -1]
def bfs(i, j):
visited[i][j] = 1 #๋ฐฉ๋ฌธ ํ์
q = deque() #ํ ์์ฑ
q.append((i, j)) #ํ์ ์ด๊ธฐ ์์น ๋ฃ๊ธฐ
homecnt = 1 #์ง์ ์
while q:
x, y = q.popleft() #ํ์์ ํ์ฌ ์์น ๋นผ๋ด๊ธฐ
for z in range(4): #ํ์ฌ ์์น์์ ์ข์ฐ์ํ ํ์ธ
nx = dx[z] + x
ny = dy[z] + y
if -1 < nx < N and -1 < ny < N: #์ง๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์์์ผ ํ๋ ์กฐ๊ฑด
if visited[nx][ny] == 0 and graph[nx][ny] == 1: #์ง์ด ์๋๋ฐ ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด
visited[nx][ny] = 1 #๋ฐฉ๋ฌธ ํ์
homecnt += 1 #์ง์ ์ ์นด์ดํธ
q.append((nx, ny)) #ํ์ ์ด๋ํ ์์น ๋ฃ๊ธฐ
homeans.append(homecnt) #ํ์ ๋๋ฌ์ผ๋ฉด ์ง์ ์ ๋ฆฌ์คํธ์ ๋ฃ๊ธฐ(์ ๋ ฌ์ ์ํด์ ๋ฆฌ์คํธ์ ์ ์ฅ)
N = int(input())
graph = [list(map(int, input().rstrip())) for _ in range(N)]
visited = [[0]*N for _ in range(N)] #0์ ๋ฐฉ๋ฌธํ์ง ์์ ์ํ
cnt = 0 #๋จ์ง ์
homeans = []
for i in range(N):
for j in range(N):
if visited[i][j] == 0 and graph[i][j] == 1: #์ง์ด ์๋๋ฐ ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด
cnt += 1 #๋จ์ง ์ ์นด์ดํธ
bfs(i, j)
print(cnt) #๋จ์ง ์ ์ถ๋ ฅ
homeans.sort() #์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด๋ฏ๋ก ๋ฆฌ์คํธ์ ์ ์ฅ๋ ์ง์ ์ ์ ๋ ฌํด์ฃผ๊ธฐ
for i in homeans: #์ ๋ ฌ๋ ์ง์ ๊ฐ์ ์ถ๋ ฅ
print(i)'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 2468๋ฒ : ์์ ์์ญ (Python/Silver 1) (0) | 2023.09.06 |
|---|---|
| BOJ 7568๋ฒ : ๋ฉ์น (Python/Silver 5) (0) | 2023.09.04 |
| BOJ 2178๋ฒ : ๋ฏธ๋ก ํ์ (Python/Silver 1) (1) | 2023.05.13 |
| BOJ 15651๋ฒ : N๊ณผ M (3) (Python/Silver 3) (0) | 2023.05.11 |
| BOJ 11725๋ฒ : ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (Python/Silver 2) (0) | 2023.05.09 |