[프로그래머스] 여행 경로 - Swift

이창형·2023년 5월 9일
0

코드

func solution(_ tickets:[[String]]) -> [String] {
    var visited = Array(repeating: false, count: tickets.count)
    // 알파벳으로 정렬
    let tickets = tickets.sorted { $0[1] < $1[1] }
    var path = [String]()

    func dfs(_ airport: String) {
        // 마지막 경로 추가
        if path.count == tickets.count {
            path.append(airport)
            return
        }

        for i in 0..<tickets.count {
            let src = tickets[i][0]
            let dst = tickets[i][1]

            if airport == src, visited[i] == false {
                visited[i] = true
                path.append(src)
                dfs(dst)
                // 모든 도시를 방문했으면 종료
                if path.count == tickets.count + 1 {
                    return
                }
                // 해당 경로로 모든 도시를 방문할 수 없다면 취소하고 다른 도시를 방문해 본다.
                path.removeLast()
                visited[i] = false
            }
        }
    }

    dfs("ICN")

    return path
}

회고

  • dfs 문제인것은 알았지만 구현을 하지못해서 다른 사람의 코드를 참고했다
  • 왜 안풀릴까..
  • 코드를 보고 이해가 되서 다행이다
  • 다음에 비슷한 유형은 꼭 풀었으면 좋겠다
profile
iOS Developer

0개의 댓글