๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[๊ฐ๋จํ DFS] ์ผ์ ๋ฌธ์ ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
์ฐธ๊ณ ํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค
https://doyyy.tistory.com/144
์ผ์ ๋ฌธ์
N X M ํฌ๊ธฐ์ ์ผ์ ํ
๊ตฌ๋ฉ์ด ๋ซ๋ ค ์๋ ๋ถ๋ถ์ 0, ์นธ๋ง์ด๊ฐ ์กด์ฌํ๋ ๋ถ๋ถ์ 1
๊ตฌ๋ฉ์ด ๋ซ๋ ค์๋ ๋ถ๋ถ๋ผ๋ฆฌ ์, ํ, ์ข, ์ฐ๋ก ๋ถ์ด์๋ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ
์ด ๋ ์ผ์ ํ์ ๋ชจ์์ด ์ฃผ์ด์ก์ ๋ ์์ฑ๋๋ ์ด ์์ด์คํฌ๋ฆผ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
# N X M ์ผ์ ํ
n, m = map(int, input().split())
# ์ผ์ ํ ์ ๋ณด
graph = [list(map(int, input())) for _ in range(n)]
def dfs(x, y):
# ๋ฒ์์ ๋ฒ์ด๋๋ฉด False
if x < 0 or x >= n or y < 0 or y >= m:
return False
# ๊ตฌ๋ฉ ๋ซ๋ฆผ
if graph[x][y] == 0:
graph[x][y] = 1
# ์, ํ, ์ข, ์ฐ๋ก ๋ถ์ด์๋ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ
dfs(x+1, y)
dfs(x-1, y)
dfs(x, y+1)
dfs(x, y-1)
return True
# ๋ฐฉ๋ฌธํ ๋
ธ๋์ผ ๊ฒฝ์ฐ False
return False
result = 0
for i in range(n):
for j in range(m):
if dfs(i,j) == True:
result += 1
print(result)
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ๋จํ BFS] ๋ฏธ๋ก ๊ฒ์ (0) | 2023.04.12 |
---|---|
[LG ์ฝ๋ฉํ ์คํธ ์์ ] ๋ง๋ฆฌ์ค ๊ฒ์ (0) | 2023.04.12 |
[๋ด๊ฐ ๋ณผ ์ ์ฉํ ๋ชจ์] ์ฝ๋ฉ ํ ์คํธ (0) | 2022.10.07 |
Comments