문제
내가 푼 풀이
>### 좋아요가 많은 풀이
from collections import defaultdict
def dfs(graph, N, key, footprint):
print("dfs-----------------")
print("footprint: ",footprint) #이건 왜 print하는거???그리고 footprint는 음..여행경로를 담는 장치?
if len(footprint) == N + 1:
print("for문 안돌고 return")
return footprint
print("graph: ", graph, " / graph[key]: ",graph[key], " / key : ", key)
for idx, country in enumerate(graph[key]):
print("idx: ", idx, " / country: ", country)
graph[key].pop(idx) #key에서 pop하는건지 value에서 pop하는건지 ★★★헉 value를 pop하는거다!!!!!!!!!!!!!!!
print("pop하고 난 후 graph:", graph)
tmp = footprint[:]
tmp.append(country)
print("tmp: ",tmp)
ret = dfs(graph, N, country, tmp)
print("insert하기 전에 graph: ", graph, " / key: ", key) #왜 insert..?!?! 넘어갔는데 없을 경우!!!해당 key의 남은 도시가!!다시 돌아와서
graph[key].insert(idx, country)
print("dfs호출이 끝나고 insert한 이후의 graph: ", graph)
if ret: #ret이 존재하면
return ret
def solution(tickets):
answer = []
graph = defaultdict(list)
N = len(tickets)
for ticket in tickets:
graph[ticket[0]].append(ticket[1])
graph[ticket[0]].sort()
answer = dfs(graph, N, "ICN", ["ICN"])
return answer