문제
코드
def solution(tickets):
tickets.sort(reverse=True)
routes = {}
for start,end in tickets:
if start in routes:
routes[start].append(end)
else:
routes[start] = [end]
stack = ["ICN"]
path = []
while stack:
top = stack[-1]
if top in routes and routes[top]:
stack.append(routes[top].pop())
else:
path.append(stack.pop())
return path[::-1]
풀이
- 주어진 비행기표를 다 사용한 후 여행경로를 출력해라
- 알파벳 순서가 빠른것을 먼저 출력하라고 했기 때문에 tickets을 역순으로 정렬
- 우선 routes라는 딕셔너리를 만들어 출발지는 key로 목적지는 value로 만들어준다.
- stack 으로 사용할 배열에 제일 첫번째에 “ICN”을 넣어주고, while문을 돌린다.
- while문을 돌리면서 갈 경로가 있으면 스택에 추가해주고, 아니면 stack에서 꺼내 path에 추가한다
- 마지막 역순으로 되어있는 경로를 뒤집어서 출력해준다.
'알고리즘' 카테고리의 다른 글
[백준] 9456 스티커 python (2) | 2024.03.18 |
---|---|
[백준] 15663 N과M (9) python (0) | 2024.03.18 |
[백준] 1063 킹 python (4) | 2024.03.06 |
[백준] 25709 1 빼기 python (0) | 2024.02.29 |
[백준] 1535 안녕 python (1) | 2024.02.28 |