
문제 풀이
DFS + 백트래킹으로 접근하여 풀었습니다.
- visited를 이용해서 사용한 티켓 판별
- dfs 종료 조건은 방문한 여행지가 전체 티켓의 개수 + 1인 경우(조건이 모든 여행지를 간다고 했으므로)
- 티켓의 출발지와 path(방문지)의 마지막이 같고 사용하지 않은 티켓인 경우 dfs 사용
- path.pop을 해줘야 원래 상태로 돌아감
- 리스트에 ICN을 넣은 상태로 하면 첫 출발지는 ICN으로 고정 가능
def solution(tickets):
answer = []
tickets.sort()
N = len(tickets)
visited = [False] * N
def dfs(path):
if len(path) == N+1:
answer.append(path[:])
return
for i in range(N):
if tickets[i][0] == path[-1] and visited[i] == False:
visited[i] = True
path.append(tickets[i][1])
dfs(path)
path.pop()
visited[i] = False
dfs(["ICN"])
return answer[0]반응형
'프로그래머스 - Python > 알고리즘 고득점 Kit' 카테고리의 다른 글
| [알고리즘 고득점 Kit] 그래프 - 가장 먼 노드 (0) | 2025.10.02 |
|---|---|
| 알고리즘 고득점 Kit - 그래프 - 순위 (3) | 2025.07.24 |
| 알고리즘 고득점 Kit - DFS/BFS - 단어 변환 (0) | 2025.06.17 |
| 알고리즘 고득점 Kit - BFS - 게임 맵 최단거리 (0) | 2025.06.17 |
| 알고리즘 고득점 Kit - dfs/bfs - 타겟 넘버 (0) | 2025.06.14 |