알고리즘/문제

[DFS] 프로그래머스 여행경로

_Min 2021. 5. 14. 15:15

문제링크 https://programmers.co.kr/learn/courses/30/lessons/43164

 

 

 

[답코드]

def dfs(cand, visit, target):
    global n, answer
    if len(visit) == n:
        answer.append(visit+[target])
        return

    for i, v in enumerate(cand):
        if v[0] == target:
            dfs(cand[:i] + cand[i + 1:], visit + [v[0]], v[1])


def solution(tickets):
    global n, answer
    n = len(tickets)
    answer = []

    for i, v in enumerate(tickets):
        if v[0] == "ICN":
            dfs(tickets[:i] + tickets[i + 1:], [v[0]], v[1]) # 후보값, 방문값, 도착값
    answer.sort()
    return answer[0]

 

 

[소감]

아직 dfs 가 어렵다

return 에 의존하기 보다는 global 변수를 지정해서 사용하는 방식이 편해보인다

728x90