|
์ฝ๋ ์์ฑํ๊ธฐ
from collections import defaultdict
def solution(tickets):
answer=[]
graph=defaultdict(list)
for ticket in tickets :
graph[ticket[0]].append(ticket[1])
for key in graph.keys():
graph[key].sort(reverse=True)
def dfs():
stack=["ICN"]
while stack :
start=stack[-1]
if not graph[start] :
answer.append(stack.pop())
else:
stack.append(graph[start].pop())
dfs()
return answer[::-1]
Python
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
โข
dfs๋ฅผ ํ๋ ์ด์
์ฌํ์ง๋ฅผ ๋ค ๋์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ค์ ๋์๊ฐ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ธฐ ์ํจ
๋ก์ง
1. key๋ ์ถ๋ฐ์ง value๋ ๋์ฐฉ์ง์ธ dictionary ์์ฑ
2. value๋ค์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ(๊ฒฝ๋ก๊ฐ ์ฌ๋ฌ๊ฐ ์ผ๋ ์ํ๋ฒณ ์ฌ์ ์์ผ๋ก ๋จผ์ ์ธ ๊ฒฐ๊ณผ ์ถ๋ ฅํ๊ธฐ ์ํด)
3. ICN๋ถํฐ ์์ํด์ ์ฌํ์ง ์ฐพ๊ธฐ
โข
์คํ top ์์๊ฐ ์ถ๋ฐ์ง์ธ ๊ฒฝ๋ก stack์ ๋ฃ๊ธฐ
โข
์ถ๋ฐ์ง์ธ ๊ฒฝ๋ก๊ฐ ์๋ค๋ฉด answer์ ์ถ๊ฐ
4.answer๋ฅผ ๋ค์ง์ด์ ์ถ๋ ฅ
์์
stack | answer |
['ICN'] | [] |
['ICN', 'ATL'] | [] |
['ICN', 'ATL', 'ICN'] | [] |
['ICN', 'ATL', 'ICN', 'SFO'] | [] |
['ICN', 'ATL', 'ICN', 'SFO', 'ATL'] | [] |
['ICN', 'ATL', 'ICN', 'SFO', 'ATL', 'SFO'] | [] |
['ICN', 'ATL', 'ICN', 'SFO', 'ATL'] | ['SFO'] |
['ICN', 'ATL', 'ICN', 'SFO'] | ['SFO', 'ATL'] |
['ICN', 'ATL', 'ICN'] | ['SFO', 'ATL', 'SFO'] |
['ICN', 'ATL'] | ['SFO', 'ATL', 'SFO', 'ICN'] |
['ICN'] | ['SFO', 'ATL', 'SFO', 'ICN', 'ATL'] |
[] | ['SFO', 'ATL', 'SFO', 'ICN', 'ATL', 'ICN'] |