Skip to content

Commit d07bd4e

Browse files
committed
[level 3] Title: 여행경로, Time: 0.81 ms, Memory: 10.3 MB -BaekjoonHub
1 parent bdaca64 commit d07bd4e

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# [level 3] 여행경로 - 43164
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/43164)
4+
5+
### 성능 요약
6+
7+
메모리: 10.3 MB, 시간: 0.81 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS)
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 03월 07일 20:10:43
20+
21+
### 문제 설명
22+
23+
<p>주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.</p>
24+
25+
<p>항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.</p>
26+
27+
<h5>제한사항</h5>
28+
29+
<ul>
30+
<li>모든 공항은 알파벳 대문자 3글자로 이루어집니다.</li>
31+
<li>주어진 공항 수는 3개 이상 10,000개 이하입니다.</li>
32+
<li>tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.</li>
33+
<li>주어진 항공권은 모두 사용해야 합니다.</li>
34+
<li>만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다.</li>
35+
<li>모든 도시를 방문할 수 없는 경우는 주어지지 않습니다.</li>
36+
</ul>
37+
38+
<h5>입출력 예</h5>
39+
<table class="table">
40+
<thead><tr>
41+
<th>tickets</th>
42+
<th>return</th>
43+
</tr>
44+
</thead>
45+
<tbody><tr>
46+
<td>[["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]]</td>
47+
<td>["ICN", "JFK", "HND", "IAD"]</td>
48+
</tr>
49+
<tr>
50+
<td>[["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]</td>
51+
<td>["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"]</td>
52+
</tr>
53+
</tbody>
54+
</table>
55+
<h5>입출력 예 설명</h5>
56+
57+
<p>예제 #1</p>
58+
59+
<p>["ICN", "JFK", "HND", "IAD"] 순으로 방문할 수 있습니다.</p>
60+
61+
<p>예제 #2</p>
62+
63+
<p>["ICN", "SFO", "ATL", "ICN", "ATL", "SFO"] 순으로 방문할 수도 있지만 ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] 가 알파벳 순으로 앞섭니다.</p>
64+
65+
<h5>문제가 잘 안풀린다면😢</h5>
66+
67+
<p>힌트가 필요한가요? [코딩테스트 연습 힌트 모음집]으로 오세요! → <a href="https://school.programmers.co.kr/learn/courses/14743?itm_content=lesson43164" target="_blank" rel="noopener">클릭</a></p>
68+
69+
70+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from collections import defaultdict
2+
3+
def solution(tickets):
4+
graph = defaultdict(list)
5+
for src, dst in sorted(tickets, reverse=True):
6+
graph[src].append(dst)
7+
print(graph)
8+
stack = ["ICN"]
9+
route = []
10+
11+
while stack:
12+
while graph[stack[-1]]:
13+
A = graph[stack[-1]].pop()
14+
stack.append(A)
15+
route.append(stack.pop())
16+
return route[::-1]

0 commit comments

Comments
 (0)