• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

dfs 로는 풀 수 없을까요?

21.04.22 09:45 작성 조회수 83

0

안녕하세요,

유익한 강의 정말 잘 듣고 있습니다. 

이러한 강의를 만들어주셔서 감사합니다.

다름이 아니라 dfs로 풀려고 하는데 층이 잘 세어지지 않아서 문제가 발생합니다

import sys
from collections import deque
sys.stdin=open("input.txt", "r")

def DFS(x,y):
    global cnt
    for k in range(4):
        xx=x+dx[k]
        yy=y+dy[k]
        if 0<=xx<m and 0<=yy<n and num[xx][yy]==0 and ch[xx][yy]==0:
            ch[xx][yy]=ch[x][y]+1
            num[xx][yy]=1
            DFS(xx,yy)


if __name__=="__main__":
    dx=[-1,0,1,0]
    dy=[0,-1,0,1]
    n,m=map(int,input().split())
    num=[list(map(int,input().split())) for _ in range(m)]
    ch=[[0]*n for _ in range(m)]
    for i in range(m):
        for j in range(n):
            if num[i][j]==1 and ch[i][j]==0:
                DFS(i,j)

ch를 출력하면 정답 코드와 다르게 출력이 되는데, 이를 해결할 방법은 없을까요? 오랫동안 고민하다가 여쭙습니다.

감사합니다 ^^ 좋은 하루보내세요

답변 1

답변을 작성해보세요.

1

안녕하세요^^

이 문제처럼 최단거리로 퍼져나가는 문제는 DFS로 풀면 안되고 BFS로 풀어야 합니다. 

binbinbin님의 프로필

binbinbin

질문자

2021.04.26

강사님 덕분에 DFS, BFS에 대한 이해도가 더 높아졌습니다. 감사합니다^^