[Python][프로그래머스][Level3] 여행경로

[Python][프로그래머스][Level3] 여행경로

코드

answer=[]
def dfs(start,check,tickets,ans):
    if not 0 in check:
        answer.append(ans)
        return
    
    for idx, (x, y) in enumerate(tickets):
        if x==start and check[idx]==0:
            check[idx]=1
            dfs(y,check,tickets,ans+[y])
            check[idx]=0
    
def solution(tickets):
    dfs("ICN",[0]*len(tickets),tickets,["ICN"])
    return sorted(answer)[0]

dfs로 풀었다.

모든 티켓을 다 쓰고 완주하는 경우를 모두 기록한뒤에 알파벳순으로 정렬해서 한가지만 반환하는 문제이다.

tickets와 길이가 같은 check 배열을 통해 해당 티켓을 사용했는지 안했는지 체크한다.

만약 check에 0이 없다면 모든 티켓을 쓴 것이기 때문에 answer 배열에 추가한다.

Discussion and feedback