https://school.programmers.co.kr/learn/courses/30/lessons/43164
2026.04.02 ์ธ์ ๋ณต์กํ๊ฒ ํ์๋ค ๊ธฐ์
dfs๋ก ์ฒ์์ ์ ๊ทผํ๋ค๊ฐ ๋ค์ ๋์์์ผ ํ๋ค ํ๊ณ bfs๋ก ๋ฐ๊ฟจ์๋๋ฐ
์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ฐฑํธ๋ ํน์ ํ๋ฉด ๋๋ค๋๊ฑฐ!
from collections import deque
def next_where(curr, tickets):
routes = []
for idx, (s,e) in enumerate(tickets):
if s == curr:
routes.append((idx,e))
return routes
def bfs(start, tickets, n):
queue = deque([(start, [start], [])])
answer_list = []
while queue:
curr, answer, visited = queue.popleft()
if len(answer) == n + 1: # ์ฃผ์ด์ง ํญ๊ณต๊ถ ๋ชจ๋ ์ฌ์ฉํจ
answer_list.append(answer)
next_routes = next_where(curr, tickets)
for n_idx, n_r in next_routes: # ํ ์์น์์ ๊ฐ ์ ์๋ ๊ฒฝ๋ก
if (n_idx, curr, n_r) not in visited: # ๋ฐฉ๋ฌธํ ์ ์๋ ๋ฃจํธ์ผ ๋
answer_n = answer + [n_r]
visited_n = visited + [(n_idx, curr, n_r)]
queue.append((n_r, answer_n, visited_n))
return answer_list
def solution(tickets):
# ๊ฐ๋ฅํ ๊ฒฝ๋ก ๋ด๊ธฐ
# ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด ์ํ๋ฒณ์ด ๋จผ์ ์ธ ๊ฒฝ๋ก๋ฅผ ๋ด๊ธฐ <-- X
# dfs๋ก ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ถ
# ํ์ฌ ์์น์์ ๊ฐ ์ ์๋ ๋ค์ ์ฅ์๋ค ๋ฐฐ์ด์ ๋ฐ์
# ๊ทธ ๋ฐฐ์ด์ ์ํ๋ฒณ ์์๋๋ก ๋ฐฐ์ดํ๊ณ <-- X
# ๊ฐ๊ฐ์ ๊ฒฝ๋ก bfs๋ก ์ ๊ทผ
answer_list = bfs("ICN", tickets, len(tickets))
answer_list.sort()
return answer_list[0]
๋ฐฑํธ๋ํน ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์ด๋ ต๋ค ,, ใ ใ
import sys
sys.setrecursionlimit(10**4)
def dfs(curr, tickets, visited, path, answer):
if len(path) == len(tickets) + 1:
answer.append(path[:])
return
for i in range(len(tickets)):
if not visited[i] and tickets[i][0] == curr:
next = tickets[i][1]
visited[i] = True
dfs(next, tickets, visited, path + [next], answer)
visited[i] = False
def solution(tickets):
answer = []
visited = [False] * len(tickets)
dfs("ICN", tickets, visited, ["ICN"], answer)
answer.sort()
return answer[0]
https://school.programmers.co.kr/learn/courses/30/lessons/43164
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ๋ก๊ทธ๋๋จธ์ค Lv2 | ์ ๋ ฌ | ๊ฐ์ฅ ํฐ ์ (0) | 2025.10.09 |
|---|---|
| ํ๋ก๊ทธ๋๋จธ์ค | dfs/bfs | ํ๊ฒ ๋๋ฒ (0) | 2025.10.09 |
| ํ๋ก๊ทธ๋๋จธ์ค | dfs/bfs | ๋จ์ด๋ณํ (0) | 2025.10.09 |
| ํ๋ก๊ทธ๋๋จธ์ค | dfs/bfs | ๋คํธ์ํฌ (0) | 2025.10.09 |
| ํ๋ก๊ทธ๋๋จธ์ค | ํ์๋ฒ | ๊ตฌ๋ช ๋ณดํธ (0) | 2025.10.08 |