์ฐธ๊ณ ) ์ด๊ฒ์ด ์ทจ์
์ ์ํ ์ฝ๋ฉํ
์คํธ๋ค with ํ์ด์ฌ ์ฑ
์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ฌธ์ ์ ์ฝ๋์
๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๋ ์์ธํ๊ฒ ์ ์ง ์๊ณ , ๊ฐ๋จํ ์ค๋ช
๊ณผ ์ ์ฝ๋๋ง ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค.
์ค์ ๋ฌธ์ (1) ์๋ฃ์ ์ผ๋ ค๋จน๊ธฐ
- N x M ํฌ๊ธฐ์ ์ผ์ํ
- ๊ตฌ๋ฉ์นธ 0 ์นธ๋ง์ด์นธ 1
- ๊ตฌ๋ฉ์ด ๋ซ๋ ค์๋ ๋ถ๋ถ๋ผ๋ฆฌ ์ํ์ข์ฐ๋ก ๋ถ์ด์๋ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๊ฐ์ฃผ
- ์ผ์ํ์ด ์ฃผ์ด์ก์ ๋, ์์ฑ๋๋ ์์ด์คํฌ๋ฆผ์ ์ด ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ์์ฑ
##### ์
๋ ฅ์กฐ๊ฑด
- ์ฒซ์จ์ค์ ์ผ์ํ์ ์ธ๋ก N ๊ฐ๋ก M ์ฃผ์ด์ง
- 1<= N, M <= 1000
- ๋๋ฒ์งธ ์ค ๋ถํฐ N+1์ค๊น์ง ์ผ์ํ์ ํํ ์ฃผ์ด์ง
- ๊ตฌ๋ฉ์ด ๋ซ๋ ค์๋ ๋ถ๋ถ์ 0 ๊ทธ๋ ์ง์์ ๋ถ๋ถ 1
<๋ฌธ์ ํ์ด >
1. DFS ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํผ๋ค. (DFS/BFS ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด์ผํ๋์ง ์์ง ๊ฐ์ด ์์จ๋ค.)
2 . ์ฒ์ (0,0)๋ถํฐ ๋ฐฉ๋ฌธ์ ์์
3. (0,0) ์ํ์ข์ฐ์ ๊ตฌ๋ฉ์ด๋ซ๋ ค์๋(0) ๊ณณ์ด ์๋์ง ํ์ธํ๋ค.
4. ๋ง์ฝ ๊ตฌ๋ฉ์ด ๋ซ๋ ค ์๋ค๋ฉด ๋ซ๋ ค์๋ ๊ณณ์ 1๋ก ๋ฐ๊ฟ์ค๋ค. (๋ฐ๊ฟ์ฃผ์ง ์์ผ๋ฉด ๋ค์์ ๋ ๊ฐฏ์๋ฅผ ์ธ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์จ๋ (0,0)๊ณผ ์ฐ๊ฒฐ๋ ๊ณณ์ด๊ธฐ ๋๋ฌธ์ 1๋ฒ๋ง ์ธ์ด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, (0,0)๊ณผ ์ธ์ ํ ๋ชจ๋ 0์ 1๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด๋ค~)
5. ์ต์ข
๊ฐ์ผ๋ก True๋ฅผ ์ถ๋ ฅํ ๊ฒ์ด๋ค. ๋์ค์ True์ธ ๊ฒ๋ง ์นด์ดํธ ํ๊ธฐ ์ํด์๋ค.
<๋ด๊ฐ ํผ ์ฝ๋ ๋ฐ ๋ต์ ์์ ์ฝ๋>
DFS ์ฌ๊ทํจ์๋ฅผ ์ด๋ป๊ฒ ํ์ฉํด์ผํ ์ง ๋ชฐ๋ผ์ ๋ต์์ ์ฐธ๊ณ ํ๋ฉฐ ํ์๋ค. ๊ทธ๋๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค. ๋๋ฌด ์ด๋ ต๋ค.. ๋ง์ ๋ฌธ์ ๋ฅผ ์ ํด๋ณด๋ฉด์ ๊ฐ์ ์ก๋๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค.
#์
๋ ฅ๋ฐ๋ ์ฝ๋
n, m = map(int, input().split())
graph = []
for i in range(n):
graph.append(list(map(int, input())))
# ์ฌ๊ท๋ฅผ ํ์ฉํ dfs ๋ก ๊ตฌํํ๋๊ฒ์ด tip
def dfs(x, y):
# ๋ค์ด์ค๋ ์ xy๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๊ทธ๋ฅ ๋ฐ๋ก false์ฒ๋ฆฌ
if x >= n or y >= m or x < 0 or y < 0:
return False
#๋ฐฉ๋ฌธ๋
ธ๋ ํ์ธ
if graph[x][y] == 0:
#๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
graph[x][y] = 1
#๊ทธ๋ค์ ์ํ์ข์ฐ๋ฅผ ์ดํด๋ณด๊ณ ์ํ์ข์ฐ๊ฐ 0์ด๋ฉด 1๋ก ๋ ๋ฐ๊พธ์ด์ฃผ๋ฉด์ ๋ฐฉ๋ฌธํด์ผํด
# ์ด๋ ๋ค์ ํจ์๋ฅผ ์์ฑํ์ง ๋ง๊ณ ์ฌ๊ท๋ฅผ ํ์ฉํ์
dfs(x-1, y) #์
dfs(x+1, y) #ํ
dfs(x, y-1) #์ข
dfs(x, y+1) #์ฐ
return True # 0์ด๋๊น true๋ก ๋ฐํํด์ค๋ค
return False #0์ด ์๋๋๊นFalse๋ก...
# ๋ชจ๋ ๋
ธ๋๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ์ธํด๋ณด๊ธฐ
result = 0
for i in range(n):
for j in range(m):
if dfs(i,j) == True:
result += 1
print(result)
- ์ถ๋ ฅ
์ฒซ์จ์ค : N M ์
๋ ฅ๋ฐ์
๋์จ์ค ๋ถํฐ N+1๋ฒ์จ ์ค๊น์ง๋ 1๊ณผ 0์ ๋ํ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ๋๋ค
์
์จ์ค : ์ต์ข
์ถ๋ ฅ๊ฐ์ด๋ค
์ ... ์ด๋ ต๋ค ใ ใ ใ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ณด๋ฉด์ ์ต์ํด์ ธ์ผ๊ฒ ๋ค.