๋ฌธ์
https://www.acmicpc.net/problem/1012
๋ด ๋ฌธ์ ํ์ด
t = int(input())
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
queue = []
for _ in range(t):
m, n, k = map(int, input().split()) # ๊ฐ๋ก๊ธธ์ด, ์ธ๋ก๊ธธ์ด, ๋ฐฐ์ถ ๊ฐ์
space = [[0] * m for _ in range(n)] # ๋ฐฐ์ถ๋ฐญ
count = 0
for _ in range(k):
y, x = map(int, input().split())
space[x][y] = 1
def bfs():
index = 0
while len(queue) > index:
x = queue[index][0]
y = queue[index][1]
index += 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or ny < 0 or nx >= n or ny >= m or space[nx][ny] == 0: continue
space[nx][ny] = 0
queue.append((nx, ny))
for i in range(n):
for j in range(m):
if space[i][j] == 1:
queue.append((i, j))
space[i][j] = 0
count += 1
bfs()
queue = []
print(count)
๐ bfs/dfs ๋ฌธ์ ์ธ๋ฐ, dfs๋ก ํ๋ฉด ๋ ์ฌ์ธ ๊ฒ ๊ฐ์ง๋ง ๋ด๊ฐ bfs์ ๋ ์ฝํ ๊ฒ ๊ฐ์์ bfs๋ก ํ์ด๋ดค๋ค.
- 2์ค for๋ฌธ์ผ๋ก ๋ ์ ํ ์นธ์ฉ ํ์ํ๋ฉด์ 1์ด ๋์ค๋ฉด bfs ํจ์๋ฅผ ๋๋ ค์ฃผ์๋ค.
- bfs ํจ์์์๋ dx, dy ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์ฌ ์ํ์ข์ฐ๋ฅผ ํ์ํด์ฃผ์๋ค.
1์ ๋ง๋๋ค๋ฉด queue์ ํด๋น ์๋ฆฌ๋ฅผ ์ถ๊ฐํด์ ํ์์ ๊ณ์ํ๋๋ก ํด์ฃผ์๊ณ ,
1์ด ์๋ ์๋ฆฌ๋ 0์ผ๋ก ๋ฐ๊ฟ์ฃผ์ด ๋ค์ ๊ฐ์ ํ์์ ํ์ง ์๋๋ก ํ๋ค.
โ๏ธ ์ด ๋ฌธ์ ์์ ์ ์ฒดํฌํด์ค์ผ ํ ์ ์,
๋ค๋ฅธ dfs, bfs ๋ฌธ์ ์๋ ๋ค๋ฅด๊ฒ ๋ฐฐ์ถ๊ฐ ์๋ ์๋ฆฌ๋ฅผ m, n์ผ๋ก ํ์ํด์ฃผ์๊ธฐ ๋๋ฌธ์
๋ฆฌ์คํธ์์ ํด๋น ์๋ฆฌ๋ฅผ ์ฒดํฌํด์ค ๋ x, y๊ฐ ์๋๋ผ y, x๋ก ๋ฐ๊ฟ์ ๋ฐฐ์ถ์ ์๋ฆฌ๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.
(์ด์ ์ swift๋ฅผ ์ด์ฉํด์ dfs๋ก ํ์๋ ๊ฒ์๊ธ -> https://seolhee2750.tistory.com/129)
๐ก ํผ๋๋ฐฑ
- ์ฌ์ด ๋ฌธ์ ๋ผ ๊ธ๋ฐฉ ํ์๋๋ฐ, ์ด์ํ๊ฒ ์๊พธ ์ค๋ฅ๊ฐ ๋์ ๋ณด๋๊น
ํ์ด์ฌ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ || ๋ง๊ณ or ๋ผ๊ณ ์จ์ผ๋๋๋ผ,,!
ํ์ด์ฌ์ ์ค๋๋ง์ ์ฐ๋๊น ๋ ํท๊ฐ๋ฆฐ๋ค.ใ ํ์ดํ ,,
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ์ฐ๊ฒฐ ์์์ ๊ฐ์ BOJ #11724 (0) | 2022.01.29 |
---|---|
[Python Algorithm] ๋ฐ์ด๋ฌ์ค BOJ #2606 (0) | 2022.01.28 |
[Python Algorithm] ์ ์ ์ผ๊ฐํ BOJ #1932 (0) | 2021.12.17 |
[Python Algorithm] RGB๊ฑฐ๋ฆฌ BOJ #1149 (0) | 2021.12.16 |
[Python Algorithm] ํ๋ฒํ ๋ฐฐ๋ญ BOJ #12865 (2) | 2021.11.25 |
๋๊ธ