프로그래머스 - 깊이/너비 우선 탐색(DFS/BFS)
- Point . dic로 그래프 만들고 DFS로 풀기
from collections import defaultdict
def solution(tickets):
# 특정 티켓의 인접 리스트를 구하는 함수
def init_graph():
routes = defaultdict(list)
for key, value in tickets:
routes[key].append(value)
return routes
# 스택을 사용한 DFS
def dfs():
stack = ["ICN"] # 첫시작은 ICN
path = [] # 가려고하는 경로를 저장하는 변수
while stack: # stack이 비어있을 때까지
top = stack[-1]
# 특정 공항에서 출발하는 표가 없다면 또는 있지만 티켓을 다 써버린 경우
if top not in routes or len(routes[top]) == 0:
path.append(stack.pop())
else:
stack.append(routes[top].pop(0))
return path[::-1]
routes = init_graph() # 그래프로 만들기
for r in routes: # 알파벳순 정렬
routes[r].sort()
answer = dfs() # 경로 구하기
return answer
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[ 프로그래머스 / 파이썬 ] 프린터 - deque (0) | 2021.04.15 |
---|---|
[ 프로그래머스 / 파이썬 ] 프로그래머스 LEVEL 1 풀이 (0) | 2021.04.15 |
20210408_코테공부 (0) | 2021.04.08 |
20210407_코테공부 (0) | 2021.04.07 |
[ 프로그래머스 / 파이썬 ] 주식가격 (0) | 2021.03.31 |