[백준] 4963 - 섬의 개수

2024. 6. 26. 17:18PS/백준

728x90

문제 링크

https://www.acmicpc.net/problem/4963

느낀 점

아주 기본 적인 dfs 구현 문제!

import sys
sys.setrecursionlimit(12345678)
answer = []
while True:
    w, h = map(int, sys.stdin.readline().split())
    if w == 0 and h == 0:
        break
    else:
        count = 0
        maps = []
        for _ in range(h):
            maps.append(list(sys.stdin.readline().split()))
        d = [(-1, 0), (-1, -1), (-1, 1), (0, -1), (0, 1), (1, 0), (1, -1), (1, 1)]
        def dfs(i, j):
            global count
            for di, dj in d:
                ui = i + di
                uj = j + dj
                if ui >= 0 and uj >= 0 and ui < h and uj < w and maps[ui][uj] == '1':
                    maps[ui][uj] = '0'
                    dfs(ui, uj)
        for i in range(h):
            for j in range(w):
                if maps[i][j] == '1':
                    dfs(i, j)
                    count += 1
        answer.append(count)
for _ in answer:
    print(_)

 

 

 

 

'PS > 백준' 카테고리의 다른 글

[백준] 11663 - 선분 위의 점  (0) 2024.07.04
[백준] 7795 - 먹을 것인가 먹힐 것인가  (0) 2024.07.01
[백준] 2644 - 촌수계산  (0) 2024.06.26
[백준] 2606 - 바이러스  (0) 2024.06.26
[백준] 1189 - 컴백홈  (0) 2024.06.26