주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.
항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
| tickets | return |
|---|---|
| [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] | ["ICN", "JFK", "HND", "IAD"] |
| [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] | ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] |
예제 #1
["ICN", "JFK", "HND", "IAD"] 순으로 방문할 수 있습니다.
예제 #2
["ICN", "SFO", "ATL", "ICN", "ATL", "SFO"] 순으로 방문할 수도 있지만 ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] 가 알파벳 순으로 앞섭니다.
import java.util.*;
class Solution {
public static boolean[] visited;
public static String answer;
public static LinkedList<String> list = new LinkedList<>();;
public String[] solution(String[][] tickets) {
visited = new boolean[tickets.length];
int count = 0;
String Start = "ICN";
String Link = "ICN";
dfs(tickets, count, Start, Link);
Collections.sort(list);
return list.get(0).split(" ");
} // solution
public static void dfs(String[][] tickets, int count, String start, String Link){
if(count == tickets.length) {
list.add(Link);
return;
}
for(int i = 0 ; i < tickets.length ; i++){
if(!visited[i] && start.equals(tickets[i][0])){
visited[i] = true;
dfs(tickets, count+1, tickets[i][1], Link + " " + tickets[i][1]);
visited[i] = false;
}
}
} // dfs
}