: 한번에는 못풀었는데, 이유는 문제를 제대로 이해하지 못해서이다..
: 항공권 티켓(왕복이 아닌 편도행)이 tickets로 주어지는데, 그러한 항공권 티켓을 바탕으로 '여행 경로'를 짜야한다. 이 때, 티켓은 반드시 ICN에서 출발해서 비행기를 타고, 타고, 타서 어딘가에 도착할 수 있도록 주어진다. 즉, 중간에 항공권이 없어서, 달리 말해, A->B->C로 갈 때, A->B 항공권이 없고 그런 상황은 없다라는 것. 완벽하게 주어졌다라는 것이다. 그래서 편도행 티켓을 바탕으로 여행 경로를 순서대로 배열에 받아서 리턴하는 것이 문제의 요구사항이다. 이 때, 가능한 여행 경로가 2개 이상이면 공항을 사전순으로 생각했을 때 앞에 배치되는 단어에 해당하는 공항을 먼저 가는 것으로 한다.
answer= ["ICN"]
def recursion(node,d,l):
global answer
if l == 0:
return True
try:
if d[node]:
pass
except:
return
for idx, airport in enumerate(d[node]):
answer.append(airport)
top = d[node].pop(idx)
if recursion(top,d,l-1):
return True
d[node].insert(idx,top)
answer.pop()
def solution(tickets):
d = {}
for el in tickets:
try:
d[el[0]].append(el[1])
except:
d[el[0]] = [el[1]]
for key, val in d.items():
val.sort()
d[key] = val
l = len(tickets)
root = "ICN"
recursion(root,d,l)
return answer
: 문제를 잘읽자. 계속 풀다보니까 지문이 짧을수록 문제가 그렇게 친절하지 않다. 깊게 파고들어서 이해해야한다.