๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ
๐ ๋ฌธ์
๋ฌธ์
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค.
1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค.
์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ ,๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค.
์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ์ ์ด๋ค ์ง์ด ์ข์ฐ, ํน์ ์๋์๋ก ๋ค๋ฅธ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
๋๊ฐ์ ์์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค. <๊ทธ๋ฆผ 2>๋ <๊ทธ๋ฆผ 1>์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค.
์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ ,
๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ง๋์ ํฌ๊ธฐ N(์ ์ฌ๊ฐํ์ด๋ฏ๋ก ๊ฐ๋ก์ ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฉฐ 5≤N≤25)์ด ์ ๋ ฅ๋๊ณ ,
๊ทธ ๋ค์ N์ค์๋ ๊ฐ๊ฐ N๊ฐ์ ์๋ฃ(0ํน์ 1)๊ฐ ์ ๋ ฅ๋๋ค.์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ์์ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ์์ค.
๐ง ํ์ด
ํ์ด
# [ํ์ด์ฌ] ๋ฐฑ์ค 2667๋ฒ ๋ฌธ์ : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
from collections import deque # deque ๋ถ๋ฌ์ค๊ธฐ
n = int(input()) # n ์
๋ ฅ ๋ฐ ํ ๋น
apt = [list(map(int, input())) for _ in range(n)] # apt ๋ฐฐ์ด ์
๋ ฅ ๋ฐ ํ ๋น
dx = [1, -1, 0, 0] # ์ข, ์ฐ ์ด๋ dx ํ ๋น
dy = [0, 0, 1, -1] # ์, ํ ์ด๋ dy ํ ๋น
Q = deque() # BFS๋ฅผ ์ํ ๋น Q ํ ๋น
check = [[0] * n for _ in range(n)] # ๋ฐฉ๋ฌธ ํ์ธ์ ์ํ check n * n ํฌ๊ธฐ์ ๋ฐฐ์ด๋ก ํ ๋น
a_list = [] # ์ ๋ต์ ๋ด์ ๋น a_list ํ ๋น
for i in range(n): # n๋งํผ ์ด์ค๋ฐ๋ณต
for j in range(n):
if apt[i][j] == 1 and check[i][j] != -1: # ์ง(1)์ด๋ฉด์, ๋ฐฉ๋ฌธํ์ง ์์์ ๋(not -1)
check[i][j] = -1 # ๋ฐฉ๋ฌธํ ๊ฒ์ผ๋ก ํ์ (-1)
cnt = 1 # ๋จ์ง์ ์ํํธ ๊ฐฏ์ 1๋ก ํ ๋น
Q.append((i, j)) # Q์ x ์ขํ i์ y ์ขํ j ์ถ๊ฐ
while Q: # Q์ ์์๊ฐ ๋ค์ด ์๋ค๋ฉด
x, y = Q.popleft() # Q์์ popleftํ์ฌ x, y์ ๊ฐ ํ ๋น
for l in range(4): # ์ํ์ข์ฐ๋ก ๋ฐ๋ณต
nx = dx[l] + x
ny = dy[l] + y
if 0 <= nx < n and 0 <= ny < n and check[nx][ny] != -1 and apt[nx][ny] != 0: # nx์ ny๊ฐ ์ํํธ ๋ฐฐ์ด ๋ฒ์ ๋ด์ ์์ผ๋ฉฐ, ๋ฐฉ๋ฌธํ์ง ์์๊ณ (not -1), ์ง์ด ์๋์ง ์์ ๋ (not 0):
check[nx][ny] = -1 # ๋ฐฉ๋ฌธํ ๊ฒ์ผ๋ก ํ์ (-1)
cnt += 1 # ์ง ๊ฐฏ์ 1 ์ถ๊ฐ
Q.append((nx, ny)) # Q์ nx, ny ์ถ๊ฐ
else: # Q์ ์์๊ฐ ์๋ค๋ฉด
a_list.append(cnt) # ์ํํธ ๋จ์ง ๋น ์ง ์ต์ข
๊ฐฏ์๋ฅผ a_list์ ์ถ๊ฐ
print(len(a_list)) # a_list์ ๊ธธ์ด ์ถ๋ ฅ
a_list.sort() # a_list ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for a in a_list: # a_list์ ์์ ํ๋์ฉ ๊บผ๋ด์
print(a) # ์ถ๋ ฅ
'๐งฉ Algorithm > ๐จ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌ] ๋ฐฑ์ค 3135๋ฒ ๋ฌธ์ : ๋ผ๋์ค (0) | 2022.08.26 |
---|---|
[ํ์ด์ฌ] ๋ฐฑ์ค 2468๋ฒ ๋ฌธ์ : ์์ ์์ญ (0) | 2022.08.26 |
[ํ์ด์ฌ] ๋ฐฑ์ค 2178๋ฒ ๋ฌธ์ : ๋ฏธ๋ก ํ์ (0) | 2022.08.26 |
[ํ์ด์ฌ] ๋ฐฑ์ค 10773๋ฒ ๋ฌธ์ : ์ ๋ก (0) | 2022.08.09 |
[ํ์ด์ฌ] ๋ฐฑ์ค 10828๋ฒ ๋ฌธ์ : ์คํ (0) | 2022.08.09 |