from collections import defaultdict
def solution(tickets):
answer = []
routes = defaultdict(list)
# defaultdict(<class 'list'>, {'ICN': ['SFO', 'ATL'], 'SFO': ['ATL'], 'ATL': ['ICN', 'SFO']})
for key, value in tickets:
routes[key].append(value)
# defaultdict(<class 'list'>, {'ICN': ['SFO', 'ATL'], 'SFO': ['ATL'], 'ATL': ['SFO', 'ICN']})
for key in routes.keys():
# reverse=True 내림차순
# pop은 맨 뒤에서 빼니까
routes[key].sort(reverse=True)
stack = ["ICN"]
# stack이 비워질 때까지
while stack:
s = stack[-1]
if not routes[s]:
answer.append(stack.pop())
else:
stack.append(routes[s].pop())
return answer[::-1]
- 더 자세한 풀이
# 기본 딕셔너리
dict = {'A':1, 'B':2}
print(dict['C']) # KetError: 'C'
# defaultdict
from collections import defaultdict
default_dict = defaultdict(int)
default_dict['A'] = 1
default_dict['B'] = 2
print(default_dict['C']) # 0
##
default_dict_2 = defaultdict(list)
default_dict_2['A'] = 1
default_dict_2['B'] = 2
print(default_dict_2['C']) # []
print(default_dict_2) # defaultdict(<class 'list'>, {'A': 1, 'B': 2, 'C': []})
arr[A:B:C]
= index A 부터 index B 까지 C의 간격으로 배열을 만들어라arr = [0,1,2,3,4,5,6,7,8,9]
# 처음부터 끝까지 2칸 간격으로
print(arr[::2]) # [0,2,4,6,8]
# index 1 부터 끝까지 2칸 간격으로
print(arr[1::2]) # [1,3,5,7,9]
# 처음부터 끝까지 -1칸 간격으로 (= 역순으로)
print(arr[::-1]) # [9,8,7,6,5,4,3,2,1,0]
# 처음부터 끝까지 -2칸 간격으로 (= 역순, 2칸 간격으로)
print(arr[::-2]) # [9,7,5,3,1]
# index 3 부터 끝까지 -1칸 간격으로 (= 역순으로)
print(arr[3::-1]) # [3,2,1,0]
# index 1 부터 index 6 까지 2칸 간격으로
print(arr[1:6:2]) # [1, 3, 5]