(DFS) 백준 4963번 섬의 개수

DARTZ·2022년 4월 28일
0

알고리즘

목록 보기
25/135
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline


def dfs(x, y, n, m, graph):
    if x >= n or x < 0 or y >= m or y < 0:
        return False

    if graph[y][x] == 0:
        return False

    graph[y][x] = 0

    dfs(x+1, y, n, m, graph)
    dfs(x-1, y, n, m, graph)
    dfs(x, y+1, n, m, graph)
    dfs(x, y-1, n, m, graph)
    dfs(x+1, y+1, n, m, graph)
    dfs(x+1, y-1, n, m, graph)
    dfs(x-1, y-1, n, m, graph)
    dfs(x-1, y+1, n, m, graph)

    return True


while True:
    n, m = map(int, input().split())

    if n == 0 or m == 0:
        break

    dp = []
    count = 0
    for i in range(m):
        dp.append(list(map(int, input().split())))

    for row in range(n):
        for column in range(m):
            response = dfs(row, column, n, m, dp)
            if response == True:
                count += 1

    print(count)

특이하게도 문제를 직접 입력 받고 '대각선'도 검사를 해야하는 문제였다. 계속 틀려서 문제를 살펴봤더니 대각선도 체크를 해줘야하는 문제였다.

결론 : 맨 처음 문제를 잘 읽자

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글