- ๋ฌธ์
NxM ํฌ๊ธฐ์ ์ผ์ ํ์ด ์๊ณ ๊ตฌ๋ฉ์ด ๋ซ๋ ค ์๋ ๋ถ๋ถ์ 0, ์นธ๋ง์ด๊ฐ ์กด์ฌํ๋ ๋ถ๋ถ์ 1๋ก ํ์๋๋ค. ๊ตฌ๋ฉ์ด ๋ซ๋ ค ์๋ ๋ถ๋ถ๋ผ๋ฆฌ ์ํ์ข์ฐ๋ก ๋ถ์ด์๋ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค. ์ด ๋ ์ผ์ ํ์ ๋ชจ์์ด ์ฃผ์ด์ก์ ๋ ์์ฑ๋๋ ์ด ์์ด์คํฌ๋ฆผ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ex)
00110
00011
11111
00000
-> ์์ด์คํฌ๋ฆผ 3๊ฐ ์์ฑ
- ํด์ค
DFS ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์
1. ํน์ ํ ์ง์ ์ ์ฃผ๋ณ ์ํ์ข์ฐ๋ฅผ ์ดํด๋ณธ ๋ค์ ์ฃผ๋ณ ์ง์ ์ค์์ ๊ฐ์ด 0 ์ด๋ฉด์ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ง์ ์ด ์๋ค๋ฉด ํด๋น ์ง์ ์ ๋ฐฉ๋ฌธ
2. ๋ฐฉ๋ฌธํ ์ง์ ์์ ๋ค์ ์ํ์ข์ฐ๋ฅผ ์ดํด๋ณด๋ฉด์ ๋ฐฉ๋ฌธ์ ๋ค์ ์งํํ๋ฉด ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ง์ ์ ๋ฐฉ๋ฌธํ ์ ์๋ค.
3. 1~2๋ฒ์ ๊ณผ์ ์ ๋ชจ๋ ๋ ธ๋์ ๋ฐ๋ณตํ๋ฉฐ ๋ฐฉ๋ฌธํ์ง ์์ ์ง์ ์ ์๋ฅผ ์ผ๋ค.
n,m = map(int,input().split())
# 2์ฐจ์ ๋ฆฌ์คํธ์ ๋งต ์ ๋ณด ์
๋ ฅ๋ฐ๊ธฐ
graph =[]
for i in range(n):
graph.append(list(map(int,input())))
def dfs(x,y):
if x<=-1 or x>=n or y<=1 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)
# ๋ฒ์ ๋ฒ์ด๋๋ฉด False ๋ฐ๊ฑฐ๊ณ ์ํ์ข์ฐ ์ฐ๊ฒฐ๋ ๊ณณ๊น์ง ๋ค๋ณด๊ณ ๋๋ฉด True ์ถ๋ ฅ
# ์ฐ๊ฒฐ๋ ์ขํ๋ ์ ๋ถ 1๋ก ๋ฐ๋
return True
return False
result = 0
for i in range(n):
for j in range(m):
if dfs(i,j)==True:
result+=1
print(result)
'๐ป Programming > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค18405_๊ฒฝ์์ ์ ์ผ (DFS&BFS) (0) | 2022.02.06 |
---|---|
[python] ๋ฐฑ์ค18352_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (DFS&BFS) (0) | 2022.02.06 |
[python] ๋ฐฑ์ค14502_์ฐ๊ตฌ์ (DFS&BFS) (0) | 2022.02.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] 'ํ์ด์ฌ์ ํ์ด์ฌ๋ต๊ฒ' ๊ฐ์ ์ ๋ฆฌ (0) | 2021.08.03 |
[BFS] ๋ฏธ๋ก ํ์ถ (0) | 2021.05.17 |