본문 바로가기

카테고리 없음

프로그래머스 LV 3 여행경로

728x90
function solution(tickets) {
    var answer = [];
    let len = tickets.length
    // 알파벳순서
    tickets.sort()
    // 방문
    let visited = Array(len).fill(false)
    
    const dfs = (now,count,route) => {
        if(count === len){
            answer.push(route)
            return
        }
        for(let i=0;i<len;i++){
            if(!visited[i] && now === tickets[i][0]){
                visited[i] = true
                dfs(tickets[i][1],count+1,route+" "+tickets[i][1])
                visited[i] = false
            }
        }
    }
    
    dfs("ICN",0,"ICN")
    
    return answer[0].split(' ');
}

풀이 및 회고

일단 알파벳 순으로 이동하기 때문에 정렬을 해줬습니다.

그리고 방문 배열을 만들었습니다.

DFS 함수를 만들어 방문하지 않고 출발지가 같은 티켓이면 방문을 하도록 했습니다.

728x90