데브코스 TIL/자료구조, 알고리즘
Step 7: 깊이/너비 우선 탐색(DFS/BFS) 대표 문제 풀이: 여행경로
예니ㅣ
2023. 10. 20. 15:46
강의
"깊이 우선 탐색"은 한 정점에서 인접하고 아직 방문하지 않은 모든 정점을 방문할 때, 각 인접 정점을 기준으로 깊이 우선 탐색을 끝내고 다음 정점으로 이동하는 알고리즘 입니다.
"너비 우선 탐색"은 한 정점에서 인접하고 아직 방문하지 않은 모든 정점을 방문할 때, 방문한 각 인접 정점을 기준으로 방문한 순서에 따라 너비 우선 탐색을 행하는 알고리즘 입니다.
Step 7-3: 풀어서 내 것으로 만들자! 여행 경로
⭐ 힌트 풀이 : stack과 DFS를 이용하여 푸는 문제!
def solution(tickets):
routes = {}
for t in tickets:
routes[t[0]] = routes.get(t[0], []) + [t[1]]
for r in routes:
routes[r].sort(reverse = True)
visited = ["ICN"]
path = []
while len(visited) > 0:
top = visited[-1]
if top not in routes or len(routes[top]) == 0:
path.append(visited.pop())
else:
visited.append(routes[top][-1])
routes[top] = routes[top][:-1]
return path[::-1]