728x90
๋ฐ์ํ
- ๊ทธ๋ํ + DFS + ์คํ๋ก ํ์ด์ผ ํ๋ ๋ฌธ์ ... ๊ทธ๋ํ์ ์ฝํ ๋์๊ฒ ๋ง์ ๊ณต๋ถ๊ฐ ๋์ด์ค ๋ฌธ์
- ์ฝ๋ฉํ ์คํธ ์ฐ์ต ํํธ ๋ชจ์์ง
๋ฌธ์ ์ค๋ช
์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฌํ๊ฒฝ๋ก๋ฅผ ์ง๋ ค๊ณ ํฉ๋๋ค. ํญ์ "ICN" ๊ณตํญ์์ ์ถ๋ฐํฉ๋๋ค.
ํญ๊ณต๊ถ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด tickets๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฐฉ๋ฌธํ๋ ๊ณตํญ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ชจ๋ ๊ณตํญ์ ์ํ๋ฒณ ๋๋ฌธ์ 3๊ธ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์ฃผ์ด์ง ๊ณตํญ ์๋ 3๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค.
- tickets์ ๊ฐ ํ [a, b]๋ a ๊ณตํญ์์ b ๊ณตํญ์ผ๋ก ๊ฐ๋ ํญ๊ณต๊ถ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค.
- ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
tickets | return |
[["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] | ["ICN", "JFK", "HND", "IAD"] |
[["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] | ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
["ICN", "JFK", "HND", "IAD"] ์์ผ๋ก ๋ฐฉ๋ฌธํ ์ ์์ต๋๋ค.
์์ #2
["ICN", "SFO", "ATL", "ICN", "ATL", "SFO"] ์์ผ๋ก ๋ฐฉ๋ฌธํ ์๋ ์์ง๋ง ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] ๊ฐ ์ํ๋ฒณ ์์ผ๋ก ์์ญ๋๋ค.
ํ์ด
- ์ด ๋ฌธ์ ๋ ํ๋ ฌ๋ก ๋ง๋ค์ด์ ํ๋ค๊ฐ ํฌ๊ธฐํ๊ณ , ๋ฏธ์ ์ ๊ธฐ๋๋ณด์๋ค๊ฐ ๋ค์ ํผ ๋ฌธ์ ... ใ ก.ใ ก;
- ๋ฏธ์ ์ ํ์ ์ด ์๋ค. random.seed(43164) ใ ใ
import random
random.seed(43164)
def solution(tickets):
answer = []
stack = []
graph = {}
for a, b in tickets:
try:
graph[a].append(b)
except:
graph[a] = [b]
for a, b in graph.items():
graph[a].sort(reverse=True)
stack = ["ICN"]
while stack:
#print("graph:", graph)
a = stack.pop()
#print("stack:", stack)
if a in graph and len(graph[a]) != 0:
stack.append(a)
stack.append(graph[a].pop())
if len(graph[a]) == 0:
del graph[a]
else:
answer.append(a)
#print("stack:", stack)
#print("graph:", graph)
#print("answer:", answer)
answer.reverse()
return answer
- ๊ณ ์์ ์ฝ๋
- ์์ฒญ ๊ฐ๋จํ๋ค.
from collections import defaultdict
def solution(tickets):
r = defaultdict(list)
for i,j in tickets:
r[i].append(j)
for i in r.keys():
r[i].sort()
s = ["ICN"]
p = []
while s:
q = s[-1]
if r[q] != []:
s.append(r[q].pop(0))
else:
p.append(s.pop())
return p[::-1]
728x90
๋ฐ์ํ
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (๋ฌธ์์ด ์ธ๋ฑ์ฑ, DP) (0) | 2023.03.06 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์์ (์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit, ๊ทธ๋ํ) (0) | 2023.03.06 |
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ๋จผ ๋ ธ๋ (์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit, ๊ทธ๋ํ) (0) | 2023.03.04 |
ํ๋ก๊ทธ๋๋จธ์ค ์ฐ์ ํ์ค ๋ถ๋ถ ์์ด์ ํฉ (DP) (0) | 2023.03.02 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ง์น ํ๊ธฐ (for๋ฌธ) (0) | 2023.03.02 |