본문 바로가기

Programming/Programmers

[프로그래머스/Python] 여행경로(DFS)

 

코딩테스트 연습 - 여행경로

[[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO]

programmers.co.kr

간선정보를 하나씩 지워가면서 answer에 경로를 담는다. 어려워...ㅜㅜ 다음에 다시 풀어야지

 

import collections
def solution(tickets):
    tickets.sort(reverse=True)
    
    routes = collections.defaultdict(list)
    for t1,t2 in tickets:
        routes[t1].append(t2)
        
    answer = []
    stack = ["ICN"]
    while stack:
        top = stack[-1]
        if top not in routes or len(routes[top])==0:
            answer.append(stack.pop())
        else:
            stack.append(routes[top].pop())
             
    return answer[::-1]