๐ค ํ์ด ์ฝ๋
from collections import deque
import copy
def bfs(start, ways, visited, n):
queue = deque()
queue.append([start, start, visited])
candidate = []
while queue:
now, log, visit = queue.popleft()
if len(log) == 4 * n - 1:
candidate.append(log)
continue
for next in ways[now]:
visited_key = now + next
if visit[visited_key] != 0:
visit[visited_key] -= 1
queue.append([next, log + " " + next, copy.deepcopy(visit)])
visit[visited_key] += 1
return sorted(candidate, key = lambda x : x)[0].split(" ")
def solution(tickets):
ways = {}
visited = {}
for way in tickets:
start, end = way
visited_key = start + end
if visited_key in visited:
visited[visited_key] += 1
else:
visited[visited_key] = 1
if start not in ways:
ways[start] = [end]
else:
ways[start].append(end)
if end not in ways:
ways[end] = []
return bfs("ICN", ways, visited, len(tickets)+1)
๐ค ๋ฌธ์ ํ์ด
์ฌ์ด ๋ฌธ์ ์ธ์ค ์์์ผ๋, ๊ณ ๋ คํด์ผ ํ ์์๊ฐ ์๊ฐ๋ณด๋ค ๋ง์์ ์ ๋ฅผ ๋จน์๋ ๋ฌธ์ ์ ๋๋ค.
๋ค์์ ๋์น๊ธฐ ์ฌ์ด ์กฐ๊ฑด์ ๋๋ค.
- ๊ฐ์ A -> Bํ ํฐ์ผ์ด ์ฌ๋ฌ ์ฅ์ธ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค. ๋ฌธ์ ์ ์กฐ๊ฑด ์ด๋์๋ ์ด๋ฌํ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ ์ ํ์ด ์๋ค.
- visited ์ฒ๋ฆฌ๋ฅผ ํ ๋, ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ ๊ฒ์ด ์๋๋ผ, ํด๋น ํฐ์ผ์ ์๋นํ๋๋?์ ๊ด์ ์ผ๋ก ์ฒดํฌํด์ผ ํจ. ๊ฐ์ ์ฅ์๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐฉ๋ฌธํ ์ ์๊ธฐ ๋๋ฌธ.
์ ๋ BFS๋ฅผ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ดํ์ต๋๋ค.
๋ฐฉ๋ฌธ ์ฅ์๊ฐ ์๋, ํฐ์ผ์ ๊ธฐ์ค์ผ๋ก visited๋ฅผ ๋ง๋ค๊ธฐ ์ํด, visited_key๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌํ์ต๋๋ค.
ex) "AAA" -> "BBB"๋ผ๋ฉด, visited์ key๋ "AAABBB"
๊ทธ ํ, ticket์ ๊ฐ์ + 1๊ฐ์ ๋ ธ๋๊ฐ ๋ก๊ทธ์ ์ฐํ๊ณ , ๊ฐ ๋ ธ๋๋ ๊ธธ์ด๊ฐ 3์ธ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํฐ์ผ์ ์๋ชจํ ํ ๋ก๊ทธ์ ์ด ๊ธธ์ด(๊ณต๋ฐฑ ํฌํจ)๋, 4n - 1์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์กฐ๊ฑด์ ์ ์ฉํด ์ ๋ต ํ๋ณด๊ตฐ ๋ฆฌ์คํธ์ ์ฝ์ ํฉ๋๋ค.
visit ๋์ ๋๋ฆฌ์ deepcopy๋ฅผ ํ์ฉํด์, ๊ฐ ์ฌํ ๋ฃจํธ๋ง๋ค ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ๋ค๋ฅด๊ฒ ๊ด๋ฆฌํ๋๋ก ํ์ต๋๋ค.
for๋ฌธ์ ํน์ฑ์ append ์๊ณผ ๋ค์ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ์ฌ๋ถ ์กฐ์ ์ ์ํด 1์ ๋นผ์ฃผ๊ณ , ๋ํด์ฃผ๋ ์ฐ์ฐ์ ์ฝ์ ํ์ต๋๋ค.
๋ค์์ ๋ํด์ฃผ์ง ์์ผ๋ฉด ๋ค์ for๋ฌธ ์คํ์ ์ํฅ์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ต์ข ์ ์ผ๋ก ์์ฑ๋ ๋ก๊ทธ์ ํ๋ณด๋ค์ sortingํ ๋ค์, ๊ฐ์ฅ ์ฒซ ์์๋ฅผ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก split์ ํ๋ค๋ฉด ์ ๋ต์ด ๋ฉ๋๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (level2, python) (0) | 2023.04.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฉ์ฉกํ ์ฌ๊ฐํ (level2, python) (0) | 2023.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋์คํฌ ์ปจํธ๋กค๋ฌ (level3, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (level2, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ (level2, python) (0) | 2023.04.10 |