[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/43164
[풀이]
DFS 문제. 여러 경로가 나오면 사전순으로 정렬 후 첫번째 경로를 반환한다.
[코드]
import java.util.*;
class Solution {
List<String> list = new ArrayList<>();
boolean[] used;
public String[] solution(String[][] tickets) {
String[] answer = {};
//방문하는 공항 경로를 배열에 담아 return
used = new boolean[tickets.length];
dfs(0, "ICN", "ICN", tickets);
Collections.sort(list);
return list.get(0).split(" ");
}
public void dfs(int depth, String now, String route, String[][] tickets){
if(depth==tickets.length){
list.add(route);
return;
}
for(int i=0; i<tickets.length; i++){
if(now.equals(tickets[i][0]) && !used[i]){
used[i] = true;
dfs(depth+1, tickets[i][1], route+" "+tickets[i][1], tickets);
used[i] = false;
}
}
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[pro] 프로그래머스 level3 60059 자물쇠와 열쇠 (Java) - 시뮬레이션 (0) | 2023.01.06 |
---|---|
[pro] 프로그래머스 level3 49189 가장 먼 노드 (Java) - 다익스트라 (0) | 2023.01.06 |
[pro] 프로그래머스 level3 70130 스타 수열 (Java) (0) | 2023.01.04 |
[pro] 프로그래머스 level3 72413 합승 택시 요금 (Java) - 다익스트라 (0) | 2023.01.04 |
[pro] 프로그래머스 level3 72414 광고 삽입 (Java) - 투포인터 (0) | 2023.01.03 |