https://www.acmicpc.net/problem/4963
ํํ ๊ตฌ์ญ ๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ . ๊ทผ๋ฐ ํน์ดํ ๊ฑด ๋๊ฐ์ ๋ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฑธ๋ก ์๊ฐํด์ผ ํ๋ ๊ฒ ํน์ดํ๋ค.
๊ทธ๊ฒ๋ง ์๊ฐํ๋ฉด ๋๋จธ์ง ์ฌ์ด ๋ฌธ์ .
์์ด๋์ด
- ์ผ๋ฐ์ ์ธ ์ํ์ข์ฐํ์์์ ์ถ๊ฐ๋ก ๋๊ฐ์ ๋ฐฉํฅ๋ ์ถ๊ฐํด์ค๋ค.
์ ์ฒด ์ฝ๋
import sys
sys.setrecursionlimit(10**6)
dx = [0, 0, 1, -1, 1, -1, 1, -1]
dy = [1, -1, 0, 0, 1, -1, -1, 1]
def dfs(x, y):
if x <= -1 or x >= H or y <= -1 or y >= W:
return False
#print(x, y)
if island[x][y] == 1:
island[x][y] = 0
dfs(x, y + 1)
dfs(x + 1, y + 1)
dfs(x + 1, y)
dfs(x + 1, y - 1)
dfs(x, y - 1)
dfs(x - 1, y - 1)
dfs(x - 1, y)
dfs(x - 1, y + 1)
return True
return False
while 1:
W, H = map(int, input().split())
if W == 0 and H == 0:
break
answer = 0
island = []
for _ in range(H):
island.append([int(x) for x in sys.stdin.readline().rstrip().split()])
#print(island)
for i in range(H):
for j in range(W):
if dfs(i, j):
answer += 1
print(answer)
์ฝ๋ ์ค๋ช
dx = [0, 0, 1, -1, 1, -1, 1, -1]
dy = [1, -1, 0, 0, 1, -1, -1, 1]
dfs(x, y + 1)
dfs(x + 1, y + 1)
dfs(x + 1, y)
dfs(x + 1, y - 1)
dfs(x, y - 1)
dfs(x - 1, y - 1)
dfs(x - 1, y)
dfs(x - 1, y + 1)
๊ธฐ๋ณธ์ ์ธ ํ์์์ ๋๊ฐ์ ๋ฐฉํฅ๋ง ์ถ๊ฐํด ์ฃผ๋ฉด ๋๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1213 ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (python ํ์ด์ฌ) (0) | 2025.02.08 |
---|---|
[๋ฐฑ์ค] 1244 ์ค์์น ์ผ๊ณ ๋๊ธฐ (python ํ์ด์ฌ) (0) | 2025.01.26 |
[๋ฐฑ์ค] 30804 ๊ณผ์ผ ํํ๋ฃจ (python ํ์ด์ฌ) (0) | 2025.01.22 |
[๋ฐฑ์ค] 2563 ์์ข ์ด (python ํ์ด์ฌ) (0) | 2024.04.01 |
[๋ฐฑ์ค] 7579 ์ฑ (python ํ์ด์ฌ) (0) | 2024.03.28 |