여행경로 : level3_파이썬

흠냐뤼·2021년 6월 30일
0

프로그래머스

목록 보기
6/9

문제

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

내가 푼 풀이


>### 좋아요가 많은 풀이

from collections import defaultdict

def dfs(graph, N, key, footprint):
print("dfs-----------------")
print("footprint: ",footprint) #이건 왜 print하는거???그리고 footprint는 음..여행경로를 담는 장치?

if len(footprint) == N + 1:
    print("for문 안돌고 return")
    return footprint

print("graph: ", graph, " /  graph[key]: ",graph[key], " / key : ", key)

for idx, country in enumerate(graph[key]):
    print("idx: ", idx, "  /  country: ", country)
    graph[key].pop(idx)  #key에서 pop하는건지 value에서 pop하는건지 ★★★헉 value를 pop하는거다!!!!!!!!!!!!!!!
    print("pop하고 난 후 graph:", graph)

    tmp = footprint[:]
    tmp.append(country)

    print("tmp: ",tmp)

    ret = dfs(graph, N, country, tmp)

    print("insert하기 전에 graph: ", graph, " / key: ", key)  #왜 insert..?!?! 넘어갔는데 없을 경우!!!해당 key의 남은 도시가!!다시 돌아와서

    graph[key].insert(idx, country)

    print("dfs호출이 끝나고 insert한 이후의 graph: ", graph)

    if ret: #ret이 존재하면
        return ret

def solution(tickets):
answer = []

graph = defaultdict(list)

N = len(tickets)
for ticket in tickets:
    graph[ticket[0]].append(ticket[1])
    graph[ticket[0]].sort()

answer = dfs(graph, N, "ICN", ["ICN"])

return answer
profile
https://github.com/ono212

0개의 댓글

관련 채용 정보