모르지 않다는 것은 아는것과 다르다.

알고리즘

프로그래머스 여행경로 문제

채마스 2022. 2. 26. 01:07

접근 방식(알고리즘 분류)

  • 백트래킹

내 풀이

from collections import defaultdict

def solution(tickets):
    def recur(now, graph, route):
        #global result
        if len(route) == len(tickets) + 1:
            temp = route[:]
            result.append(temp)
            return
        for i in graph[now]:
            if i[1] == False:
                route.append(i[0])
                i[1] = True
                recur(i[0], graph, route)
                i[1] = False
                route.pop()

    graph = defaultdict(list)
    result = []

    for i in tickets:
        graph[i[0]].append([i[1], False])

    recur("ICN", graph, ['ICN'])
    result.sort()

    return result[0]

풀이 설명

  • defaultdict를 이용해서 graph를 비교적 쉽게 초기화했다.
  • 가능한 모든경로를 백트래킹을 이용해서 구한뒤 --> 가능한 경우의 수들을 정렬했다.
  • global result로 설정하니 값이 계속 바뀌었다 --> 이유는 다시 연구해볼 계획이다.
  • 위의 문제의 해결방법으로 deepcopy를 이용했다. --> 습관화 해야겠다. --> [:]

'알고리즘' 카테고리의 다른 글

점프와 순간이동  (0) 2022.02.26
프로그래머스 이진트리 문제  (0) 2022.02.26
프로그래머스 스타수열 문제  (0) 2022.02.26
프로그래머스 보석쇼핑 문제  (0) 2022.02.26
프로그래머스 배달  (0) 2022.02.26