반응형
정답은 항상 있다.
그러면 str[] 중 str[1] 을 기준으로 정렬해서 0~n을 방문해서 가장먼저 다돌수 있는게 정답이다 ^^
package excirsize;
import java.util.Arrays;
import java.util.Comparator;
public class 여행경로 {
public static void main(String[] args) {
String[][] tickets = {{"ICN", "SFO"}, {"ICN", "ATL"}, {"SFO", "ATL"}, {"ATL", "ICN"}, {"ATL","SFO"}};
for(String ans : solution(tickets)) {
System.out.print(ans +" ");
}
}
static public String[] solution(String[][] tickets) {
String[] answer = new String[tickets.length+1];
Arrays.sort(tickets, new CMP());
boolean[] check = new boolean[tickets.length];
dfs("ICN", 0, tickets, check, answer);
return answer;
}
static public boolean dfs(String location, int s, String[][] tickets, boolean[] check, String[] answer) {
answer[s] = location;
if (s == tickets.length) {
return true;
}
for (int i = 0; i < tickets.length; i++) {
if (check[i])
continue;
if (location.equals(tickets[i][0])) {
check[i] = true;
if (dfs(tickets[i][1], s + 1, tickets, check, answer))
return true;
check[i] = false;
}
}
return false;
}
static public class CMP implements Comparator<String[]> {
@Override
public int compare(String[] o1, String[] o2) {
if(o1[0].equals(o2[0])) {
return o1[1].compareTo(o2[1]);
}
return o1[0].compareTo(o2[0]);
}
}
}
반응형
'ProgramSoliving' 카테고리의 다른 글
백준 : 13549 (0) | 2020.09.15 |
---|---|
백준 : 1519 (1) | 2020.09.15 |
프로그래머스 : 단어변환 (0) | 2020.09.11 |
프로그래머스 : 네트워크 (0) | 2020.09.11 |
프로그래머스 : 타겟 넘버 (0) | 2020.09.11 |