ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌํ ๊ฒฝ๋ก
dirmathfl 2020. 8. 31. 16:48๋ฌธ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ฌํ๊ฒฝ๋ก
[[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO]
programmers.co.kr
๋ฌธ์ ํ์ด
์ฒ์์ ์๊ฐํ ๋๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๊ฐ ๊ฒฝ๋ก๋ฅผ ๋ฐฉ๋ฌธํด๋ณด๊ณ ์ํ๋ฒณ ์์ ๋ฐ๋ผ ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฐํํ๋ ค๊ณ ํ์๋ค. ํ์ง๋ง ์ฃผ์ด์ง ํฐ์ผ์ ๋ฐฉ๋ฌธ ๊ฒฝ๋ก์ ๋ฐ๋ผ, ๋์ ๋๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์ถ๋ฐ์ง์์ ๋ฐฉ๋ฌธ๊ฐ๋ฅํ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฐฑํธ๋ํน์ ํ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
{
'ICN': ['ATL', 'SFO'],
'SFO': ['ATL'],
'ATL': ['ICN', 'SFO']
}
์์ #2์ ๊ฒฝ์ฐ, ๋์ ๋๋ฆฌ๋ฅผ ํตํด ๋์ฐฉ์ง์ ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ์์ ๊ฐ์ด ์ ๋ ฌํ ์ ์๋ค. ์ ๋ ฌ๋ ์ํ์ ๋์ ๋๋ฆฌ๋ `INC`๋ฅผ ์์ํ์ผ๋ก ๋์ ๋๋ฆฌ์ value์ ์ฒซ๋ฒ์งธ์ธ `ATL`๋ถํฐ ๋ฐฉ๋ฌธํ๋ฉด `ICN - ATL - ICN - SFO - ATL - SFO` ์์ผ๋ก ๋ฐฉ๋ฌธํ ์ ์๋ค.
์ฝ๋
from collections import defaultdict, deque
def solution(tickets):
stack, answer = ["ICN"], deque()
paths = defaultdict(list)
for departure, arrival in tickets:
# ์ฌ์ ์์ผ๋ก ๋ฐฉ๋ฌธํ๊ธฐ ์ํด, ์ถ๊ฐํ ๋ ์ ๋ ฌ.
paths[departure] = sorted(paths[departure] + [arrival])
while stack:
cur_loc = stack[-1]
# ํ์ฌ ์ถ๋ฐ์ง๋ก ๋ถํฐ, ๋ฐฉ๋ฌธ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ.
if cur_loc in paths and paths[cur_loc]:
stack.append(paths[cur_loc][0])
paths[cur_loc].pop(0)
continue
# ์ถ๋ฐ์ง๋ก ๋ถํฐ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ.
answer.appendleft(stack.pop())
return answer
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋คํธ์ํฌ (0) | 2020.08.31 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋จ์ด ๋ณํ (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ์์ฅ (0) | 2020.06.10 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2020.06.09 |
ํ๋ก๊ทธ๋๋จธ์ค: ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2020.06.08 |