[프로그래머스 Level 3] 여행경로
1분 읽기
풀이 1: DFS + 백트래킹
function solution(tickets) {
const answer = [];
const visited = new Array(tickets.length).fill(false);
function dfs(graph, departure, route = [ departure ], n = 0){
// ✅ 티켓 모두 소진 시, 종료
if(n === graph.length){
answer.push(route);
return;
}
tickets.forEach((ticket, i) => {
// ✅ 유망성 판단 - 방문 여부 & 현재 위치에서 출발하는 티켓 존재 여부
if(ticket[0] === departure && !visited[i]){
visited[i] = true;
dfs(tickets, ticket[1], [...route, ticket[1]], n+1);
visited[i] = false; // ✅ 백트래킹
}
});
}
dfs(tickets, "ICN");
answer.sort();
// 알파벳 순서가 앞서는 경로
return answer[0];
}DFS/BFS10편 중 6번째
관련 글
4분 읽기
소수 구하기
소수 판별법과 소수를 구하는 알고리즘을 정리합니다.
1분 읽기
[프로그래머스 Level 2] 미로 탈출
프로그래머스 미로 탈출을 BFS로 풀이합니다.
1분 읽기
[프로그래머스 Level 2] 마법의 엘리베이터
프로그래머스 마법의 엘리베이터를 자리수 그리디로 풀이합니다.