입출력 예 설명
예제 #1
[ICN, JFK, HND, IAD] 순으로 방문할 수 있습니다.
예제 #2
[ICN, SFO, ATL, ICN, ATL, SFO] 순으로 방문할 수도 있지만 [ICN, ATL, ICN, SFO, ATL, SFO] 가 알파벳 순으로 앞섭니다.
접근법
DFS를 사용해서 문제를 푸시면 됩니다! 먼저 tickets에 있는 모든 티켓들을 "출발지":"도착지"로 하나의 딕셔너리를 생성해 줍니다. 도착지가 여러군데인 곳이 있을 수 있으니, 각각 key에 대한 도착지 리스트들을 사전순으로 정렬시켜줍니다(여기서는 pop을 통해 하나씩 빼낼겁니다! 그래서 역순으로 정렬시켜주었습니다). 현재 출발지를 담아둘 now를 선언하고 초기 출발지인 ICN을 넣어줍니다. 이제 반복문을 통해서 DFS를 진행하시면 됩니다!
나의 코드
def solution(tickets):
information = {}
for ticket in tickets:
information[ticket[0]] = information.get(ticket[0],[]) + [ticket[1]]
for infor in information:
information[infor].sort(reverse=True)
answer = []
now = ["ICN"]
while now:
top = now[-1]
if top not in information or not information[top]: answer.append(now.pop())
else:
now.append(information[top][-1])
information[top] = information[top][:-1]
return answer[::-1]