💬 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43164
💬 Idea
- 재귀함수 호출 방식을 활용하여 여행 경로를 짜자!
- 사용한 티켓을 다시 사용하는 일이 없어야 하므로 visited 배열을 만들어 티켓의 사용 여부를 저장한다.
- 여행 경로는 알파벳 순서가 앞서는 경로 순이어야 하므로 처음에 tickets 배열을 사전순으로 정렬한 뒤 순회한다.
- 이후 “ICN” 인천공항을 출발지점으로 시작하여 순회하여 여행 경로를 구한다.
💬 풀이
import Foundation
func solution(_ tickets:[[String]])->[String]{lettickets= tickets.sorted(by:{$0[1]<$1[1]})varans:[String]=[]varvisited=Array(repeating:false, count: tickets.count)func dfs(_ start:String){if tickets.count == ans.count {
ans.append(start)return}foriin0..<tickets.count {if !visited[i] && tickets[i][0]== start {visited[i]=true
ans.append(tickets[i][0])dfs(tickets[i][1])if ans.count == tickets.count +1{return}visited[i]=false
ans.removeLast()}}}dfs("ICN")return ans
}
💬 문제https://school.programmers.co.kr/learn/courses/30/lessons/43164
💬 Idea💬 풀이