🔗 Problem Link
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❔Thinking
- 출발지, 도착지가 적힌 ticket이 주어질 때, 모든 여행지를 방문하는 여행 경로를 반환한다.
💻Solution
from collections import defaultdict
def solution(tickets):
answer = []
# ticket 도착지 내림차순 정렬
tickets = sorted(tickets, key=lambda x: x[1], reverse=True)
# 티켓 그래프 생성
tickets_dict = defaultdict(list)
for t in tickets:
tickets_dict[t[0]].append(t[1])
# dfs
stack = ['ICN']
while stack:
start = stack.pop()
if not tickets_dict[start]:
answer.append(start)
else:
stack.append(start)
stack.append(tickets_dict[start].pop())
return answer[::-1]
🗝️keypoint
- 주어진 값을 연속해서 찾아가는 문제의 경우, dfs를 활용하면 효과적이다.
- 주어진 값의 인접행렬이나 그래프 형태로 바꾸어야 dfs를 활용할 수 있다.
'코딩테스트 > Python' 카테고리의 다른 글
[Baekjoon] 1012. 유기농 배추 (1) | 2023.01.20 |
---|---|
[Programmers] Level 3. 합승 택시 요금 (0) | 2023.01.19 |
[Programmers] Level 4. 가사 검색 (0) | 2023.01.12 |
[Programmers] Level 2. 괄호 변환 (0) | 2023.01.10 |
[Programmers] Level 3. 자물쇠와 열쇠 (0) | 2023.01.09 |