코테 노트/프로그래머스

Level 3 여행경로 Python3

화요밍 2021. 4. 20. 15:30
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3# 

 

코딩테스트 연습 - 여행경로

[["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"]

programmers.co.kr

 

최종 코드

 

hwayeon351/Programmers-Algorithms

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

from collections import defaultdict
def dfs(t_from, visit, t_dict, num):
    global answer
    visit += t_from
    if len(visit)//3 == num:
        if answer=="": 
            answer = visit
        else: answer=min(visit, answer)
        return
    
    if len(t_dict[t_from]) == 0:
        return
    
    for i, t_to in enumerate(t_dict[t_from]):
        if t_to[1]==False:
            t_dict[t_from][i][1] = True
            dfs(t_to[0], visit, t_dict, num)
            t_dict[t_from][i][1] = False
            
def solution(tickets):
    global answer
    answer = ""
    t_dict = defaultdict(list)
    for k, v in tickets:
        t_dict[k].append([v,False])
        t_dict[k].sort()
    dfs("ICN", "", t_dict, len(tickets)+1)
    return list(map(''.join, zip(*[iter(answer)]*3)))

풀이 과정

풀이 시간 1시간 11분

티켓 [a, b]는 a->b로 가기 때문에 이러한 tickets정보를 정리하기 위해 t_dict를 만들어줬다.

728x90
반응형