문제를 파악해보면 모든 경로를 파악하고 가능한 경로를 구해야하기 때문에 DFS 알고리즘을 사용하기로 결정했다.
하지만, 어떤 방식으로 구현해야할지 첫 틀을 잡는데 시간을 소요했던 것 같다.
def solution(tickets):
answer = []
isTicket = [0]*len(tickets) # ticket 사용 여부
def DFS(airport, path):
if len(path) == len(tickets)+1:
answer.append(path)
return
for idx, ticket in enumerate(tickets):
if airport == ticket[0] and not isTicket[idx]:
isTicket[idx] = 1 # 티켓 사용
#print(path+[ticket[1]])
# path + [ticket[1]] 방식: path 리스트에 ticket[1]을 추가한 새로운 리스트 반환
# -> 재귀 함수에서 유용
# path.append(ticket[1]) 방식 : 리스트 자체를 수정
DFS(ticket[1], path+[ticket[1]])
isTicket[idx] = 0
DFS("ICN", ["ICN"])
answer.sort()
#print(answer)
return answer[0]
📌 해결 방법
BFS/DFS
문제에 해당하고 그 중 DFS를 활용하였다.