Search

๊น€๋ฏผ์ง€

2.๋ฌธ์ œ์ด๋ฆ„
3. ์ˆ˜ํ–‰์‹œ๊ฐ„[์ดˆ(s)]
3000
์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ
์ข‹์•„์š” ์ˆ˜
: 0
5 more properties
| ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
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']