[Level3] 여행경로




여행경로

프로그래머스

나의 풀이 (dfs)

function solution(tickets) {
  let answer;

  tickets.sort();
  const visited = new Array(tickets.length).fill(0);

  const dfs = (ticket, start, route) => {
    route.push(start);

    if (route.length === ticket.length + 1) {
      answer = route;
      return true;
    }

    for (let i = 0; i < ticket.length; i++) {
      if (visited[i] === 0 && ticket[i][0] === start) {
        visited[i] = 1;

        const result = dfs(ticket, ticket[i][1], route);
        if (result) return true;

        visited[i] = 0;
        route.pop();
      }
    }
    return false;
  };

  dfs(tickets, 'ICN', []);
  return answer;
}

console.log(
  solution([
    ['ICN', 'JFK'],
    ['HND', 'IAD'],
    ['JFK', 'HND'],
  ])
);
// console.log(solution([["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]))