본문 바로가기

알고리즘/프로그래머스(Python)

[알고리즘] 프로그래머스 여행경로 / python

https://programmers.co.kr/learn/courses/30/lessons/43164

 

코딩테스트 연습 - 여행경로 | 프로그래머스

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

programmers.co.kr

 

파이썬의 dictionary를 이용

ICN - SFO, ATL

SFO - ICN

일 경우도 생각해서 코드를 짜야한다

 

def solution(tickets):
    routes = {}
    for i in tickets:
        routes[i[0]] = routes.get(i[0], []) + [i[1]]

    for j in routes:
        routes[j].sort(reverse=True)
        
    stack = ["ICN"]
    answer = []
    while len(stack) > 0:
        top = stack[-1]
        if top not in routes or len(routes[top]) == 0:
            answer.append(stack.pop())
        else:
            stack.append(routes[top][-1])
            routes[top] = routes[top][:-1]
    
    return answer[::-1]
딕셔너리 value값을 배열로 하면 값추가를 쉽게 할수있다
return answer[::-1]  # 배열을 거꾸로 리턴