인프런 커뮤니티 질문&답변

DongHwan Park님의 프로필 이미지
DongHwan Park

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

11. 등산 경로(DFS)

혹시 11. 등산 경로(BFS) 코드 알려주실 수 있을까요?

작성

·

195

0

dx=[0,1,0,-1]
dy=[-1,0,1,0]

n = int(input())
board = [ [0]*n for i in range(n) ]
dq = deque()
MAX = -999
MIN = 999
cnt = 0

for i in range(n):  # 한 줄씩 입력 받기
    tmp = list(map(int,input().split()))
    for j in range(n):
        board[i][j] = tmp[j]

        if tmp[j] < MIN :
            MIN = tmp[j]
            sx =i
            sy =j
            dq.append([sx,sy])
        elif tmp[j]>MAX:
            MAX = tmp[j]
            ex = i
            ey = j

while dq:
    tmp = dq.popleft()

            #
    if tmp[0] == ex and tmp[1]==ey:            
        cnt+=1
               

    for a in range(4):
        X = dx[a]+tmp[0]
        Y = dy[a]+ tmp[1]

        if 0<=X<n and 0<=Y<n and board[X][Y] > board[tmp[0]][tmp[1]]   :
                    # board[X][Y] = 0
            dq.append([X,Y])
                       
print(cnt)
 
 
 
'''
해당 코드에서 뭐가 잘못된건지 집어주시면 감사하겠습니다.
'''

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

등산경로는 가지수를 구하는 문제이므로 BFS로는 가능하지 않습니다.

DongHwan Park님의 프로필 이미지
DongHwan Park

작성한 질문수

질문하기