๐ค๋ฌธ์ ํด๊ฒฐ
Lv3 | DFS
๊ฐ๋จํ DFS ๋ฌธ์ ์ธ์ค ์์์ง๋ง ์กฐ๊ธ ๋ณต์กํ ๋ฌธ์ ์ด๋ค. ๊ทธ๋ฅ ํ๋ฉด ํ ์คํธ์ผ์ด์ค 1,2๋ฒ์ด ํ๋ฆฌ๊ฒ ๋๋ค.
์ด์ ๋ ์ค๊ฐ์ ๊ธธ์ด ๋์ด์ง๋ฉด ์๋๊ธฐ ๋๋ฌธ.์๋ฅผ ๋ค์ด ์ด๋ฐ ํ ์คํธ ์ผ์ด์ค๊ฐ ์๋ค๊ณ ํ์ ๋ - ( ์์ธ ์ผ์ด์ค )
์์ ๊ฐ์ด ๋๊ฐ์ง ๊ฒฝ๋ก๊ฐ ๋์ฌ ๊ฒ์ด๋ค. ๋ฌธ์ ์์๋ ์ค๋ฆ์ฐจ์๋๋ก ์งํํ๋ผ๊ณ ํ์ง๋ง B๋ฅผ ๋จผ์ ๊ฐ๊ฒ ๋๋ค๋ฉด ๋ชจ๋ ํฐ์ผ์ ์ด์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ต์ด ๋์ง ์๋๋ค.
์ฌ๊ธฐ์ D๊น์ง ๊ฐ๋ค๊ฐ ๊ธธ์ ๋ชป์ฐพ๊ณ A๋ก ๋ค์ ๋์๊ฐ์ผ ํ๋๋ฐ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผํ๋์ค
๊ธธ์ด ๋์ด์ง D๊ฐ ๋ง์ง๋ง์ด๊ฒ ๋ค ๋ผ๊ณ ์๊ฐํด์ ๊ฒฝ๋ก๋ฅผ ๊ฑฐ๊พธ๋ก ๋ฃ๊ธฐ๋ก ํ๋ค.
๊ธธ์ด ๋์ด์ ธ ์๋ answer์ D๋ฅผ ์ ์ฅํ๊ณ , D๊ฐ์์ด์ง๋ฉด B๋ ๋์ด์ง๋ค. answer ์ B๋ฅผ ์ ์ฅํ๋ค.
ํ์ง๋ง A๋ B๊ฐ ์์ด๋ C๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ค์ ์งํํ๋ค. A -> C -> A -> B(X) -> D(X)
๋, ๊ฐ๋ค๋ณด๋ฉด B๋ ์ด๋ฏธ ์์ด์ ธ ์์ผ๋ฏ๋ก A๋ฅผ answer์ ์ ์ฅํ๊ณ , ๋๋จธ์ง C, A ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ICN ์ ์ ์ฅํ๋ฉด
์ด๋ ๊ฒ ๋ค์ง์ด์ง ๊ฒฝ๋ก๊ฐ ๋์ค๊ฒ ๋๊ณ , ์ด ๊ฒฝ๋ก๋ฅผ ์ญ์์ผ๋ก ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
๐จ defaultdict ๋ ๋์ ๋๋ฆฌ์ ๊ฐ์ด ์์ผ๋ฉด ์๋์ผ๋ก ๋ํด๋๊ฐ์ผ๋ก ์ ์ฅํด๋ ๊ฐ์ด ์๊ธฐ๊ฒ ๋๋ค.
๐ป์์ค ์ฝ๋
from collections import defaultdict
def solution(tickets):
answer = []
adj = defaultdict(list)
for ticket in tickets:
adj[ticket[0]].append(ticket[1])
for key in adj.keys():
adj[key].sort(reverse=True)
q = ['ICN']
while q:
tmp = q[-1]
if not adj[tmp]:
answer.append(q.pop())
else:
q.append(adj[tmp].pop())
answer.reverse()
return answer
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋งํฌ: https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3
๋ฌธ์ ์ค๋ช
์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฌํ๊ฒฝ๋ก๋ฅผ ์ง๋ ค๊ณ ํฉ๋๋ค. ํญ์ ICN ๊ณตํญ์์ ์ถ๋ฐํฉ๋๋ค.
ํญ๊ณต๊ถ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด tickets๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฐฉ๋ฌธํ๋ ๊ณตํญ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ชจ๋ ๊ณตํญ์ ์ํ๋ฒณ ๋๋ฌธ์ 3๊ธ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์ฃผ์ด์ง ๊ณตํญ ์๋ 3๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค.
- tickets์ ๊ฐ ํ [a, b]๋ a ๊ณตํญ์์ b ๊ณตํญ์ผ๋ก ๊ฐ๋ ํญ๊ณต๊ถ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค.
- ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
ticketsreturn
[[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] ๊ฐ ์ํ๋ฒณ ์์ผ๋ก ์์ญ๋๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค - N-Queen (2) | 2020.09.13 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋๋์ง (0) | 2020.09.12 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌด์ง์ ๋จน๋ฐฉ ๋ผ์ด๋ธ(2019 KAKAO BLIND RECRUITMENT) (0) | 2020.09.11 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋ธ๋ก ๊ฒ์(2019 KAKAO BLIND RECRUITMENT) (3) | 2020.09.11 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ผ๊ทผ ์ง์ (0) | 2020.09.11 |