주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.
항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
| tickets | return |
|---|---|
| [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] | ["ICN", "JFK", "HND", "IAD"] |
| [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] | ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] |
예제 #1
["ICN", "JFK", "HND", "IAD"] 순으로 방문할 수 있습니다.
예제 #2
["ICN", "SFO", "ATL", "ICN", "ATL", "SFO"] 순으로 방문할 수도 있지만 ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] 가 알파벳 순으로 앞섭니다.
def solution(tickets): now = [] left = [] for i, t in enumerate(tickets): if t[0] == "ICN": now.append(t) left.append([tickets[j] for j in range(len(tickets)) if j != i]) depth = 0 while depth < len(tickets)-1: for i in range(len(now)-1,-1,-1): if any(t[0] == now[i][-1] for t in left[i]): for j, t in enumerate(left[i]): if t[0] == now[i][-1]: now.append(now[i]+[t[1]]) left.append([left[i][k] for k in range(len(left[i])) if k != j]) now.pop(i) left.pop(i) depth += 1 return sorted(now)[0]