[Algo] Programmers level3 여행경로(BFS/DFS)

heeeeeeeee·2025년 4월 30일

Algorithm

목록 보기
4/14

def solution(tickets):
answer = [] # 방문 경로를 담는 배열(여러개가 될 수 있음(tc:2))
visited = [False] * len(tickets)

def dfs(end, path):
    # 종료 조건
    # 모든 항공권 다 쓰면 answer에 경로 추가 
    if len(path) == len(tickets) + 1:
       
        answer.append(path[:]) # 값 복사 안하고 그냥 path만 넣으면 밑에서 path를 조작하기 때문에 answer에서의 path 값도 변한다!
        return
    
    # recursive
    # end(직전에 간 공항) == 시작 공항이면 경로 추가 가능
    for idx, ticket in enumerate(tickets):
        # 방문한 적 없고, end == ticket[0](시작공항)이면
        if not visited[idx] and (end == ticket[0]):
            visited[idx] = True
            path.append(ticket[1])
            dfs(ticket[1], path )
            visited[idx] = False
            path.pop()

dfs("ICN", ["ICN"])
answer.sort()


return answer[0]

0개의 댓글