728x90
https://school.programmers.co.kr/learn/courses/30/lessons/43164
dfs로 풀어야 겠다고 떠올렸다
그런데 보통 입력이 숫자로 주어졌고, 나는 그래프를 표현할 때 주로 이차원 리스트를 사용했는데
각각의 node에 해당하는 공항 이름들이 문자열이다보니, 처리를 쉽게 하기 위해서는 dictionary 자료형이 낫다고 생각했다.
내가 좋아하는.. 쓰기 편한 defaultdict으로 초기화 없이 우선 정의해주고,
for 문에서 각각 그래프와, visited 딕셔너리에 False값을 넣어 처리해주었다.
from collections import defaultdict
def solution(tickets):
answer = []
n = len(tickets)
graph = defaultdict(list)
visited = defaultdict(list)
for i in range(n):
graph[tickets[i][0]].append(tickets[i][1])
visited[tickets[i][0]].append(False)
def dfs(start, path):
if len(path) == n+1:
answer.append(path)
return
for i in range(len(graph[start])):
if not visited[start][i]:
visited[start][i] = True
dfs(graph[start][i],path+[graph[start][i]])
visited[start][i] = False
dfs("ICN", ["ICN"])
answer.sort()
return answer[0]
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 15787 기차가 어둠을 헤치고 은하수를 Python (0) | 2022.11.11 |
---|---|
[백준] 21278번 호석이 두 마리 치킨 Python (BFS풀이, 플로이드워셜) (0) | 2022.11.09 |
[백준] 15927 파이썬 - 회문은 회문아니야!! (0) | 2022.11.05 |
[백준] 13022 : 늑대와 올바른 단어 Python/파이썬 풀이 (0) | 2022.11.04 |
[백준] 2470 두 용액 파이썬 (0) | 2022.10.30 |