https://school.programmers.co.kr/learn/courses/30/lessons/43164
import java.util.*;
class Solution {
static int[] used;
static List<String> routeList = new ArrayList<>();
public void DFS(String targetSpot, int L, String route, String[][] tickets) {
if (L == tickets.length) {
routeList.add(route);
return;
} else {
for (int i=0; i<tickets.length; i++) {
if (used[i] == 0 && tickets[i][0].equals(targetSpot)) {
used[i] = 1;
DFS(tickets[i][1], L+1, route + " " + tickets[i][1], tickets);
used[i] = 0;
}
}
}
}
public String[] solution(String[][] tickets) {
used = new int[tickets.length];
DFS("ICN", 0, "ICN", tickets);
Collections.sort(routeList);
return routeList.get(0).split(" ");
}
}