728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/43164
import java.util.*;
class Solution {
private String SPACE = " ";
List<String> travelList = new ArrayList<>();
boolean[] ticketUsed;
int ticketCnt;
public String[] solution(String[][] tickets) {
ticketCnt = tickets.length;
ticketUsed = new boolean[ticketCnt];
dfs("ICN", "ICN", tickets, 1);
Collections.sort(travelList);
return travelList.get(0).split(SPACE);
}
public void dfs(String departure, String tmp, String[][] tickets, int cnt) {
if(cnt > ticketCnt) {
// 모든 경로 탐색 완료
travelList.add(tmp);
return;
}
for(int i=0; i<tickets.length; i++) {
if(!ticketUsed[i] && tickets[i][0].equals(departure)) {
// 해당 티켓 사용여부 임시저장
ticketUsed[i] = true;
dfs(tickets[i][1], tmp + SPACE + tickets[i][1], tickets, cnt+1);
// 다시 사용하지 않음으로 돌리기
ticketUsed[i] = false;
}
}
}
}
728x90
반응형
'알고리즘 > 문제 풀이 (출처: 프로그래머스)' 카테고리의 다른 글
[JAVA] 붕대 감기 (0) | 2024.02.24 |
---|---|
[JAVA/DFS]단어 변환 (0) | 2024.02.24 |
[JAVA/DFS] 네트워크 (0) | 2024.02.23 |
[JAVA/BFS] 가장 먼 노드 (0) | 2024.02.23 |
[JAVA] 과제 진행하기 (0) | 2024.02.23 |