반응형
[광고 누르면 오늘의 행운 상승!!]
https://programmers.co.kr/learn/courses/30/lessons/43164
String dfs문제
1. 참고사항
- route 매개변수를 들고다니면서 route를 갱신
- 모든 티켓을 써야하므로 tickets.length만큼 돌면 return;
- ICN부터 시작
- , 으로 스플릿 후 Arrays.sort로 알파벳 순서로 걸러낸다.
2. 구현
- 티켓 배열에서 ICN이 from위치에 있으면 dfs 시작
- route 매개변수를 전달하면서 route 갱신
- 티켓배열에서 end가 from인 배열을 찾아내서 dfs
- route에 end + ',' 를 더해가면서 전달
- cnt가 tickets.length가 되면 (모든 티켓을 소모하면) return;
- ,으로 스플릿 후 Arrays.sort를 이용하여 정렬
- 반환
import java.util.*;
import java.io.*;
class Solution {
static boolean visit[];
static List<String> list = new ArrayList<>();
public String[] solution(String[][] tickets) {
visit = new boolean[tickets.length];
for(int i = 0 ; i < tickets.length; i++) {
String from = tickets[i][0];
String to = tickets[i][1];
if(from.equals("ICN")) {
visit[i] = true;
dfs(tickets, to, 1,from + ",");
visit[i] = false;
}
}
Collections.sort(list);
String[] answer = list.get(0).split(",");
return answer;
}
public static void dfs(String[][] tickets, String end, int cnt, String route) {
if(cnt==tickets.length) {
list.add(route+end);
return;
}
for(int i = 0 ; i < tickets.length ; i++) {
String from = tickets[i][0];
String to = tickets[i][1];
if(end.equals(from) && !visit[i]) {
visit[i] = true;
dfs(tickets, to, cnt+1,route + end + ",");
visit[i] = false;
}
}
}
}
반응형
'2. 알고리즘사이트 > 3. 프로그래머스' 카테고리의 다른 글
최댓값과 최솟값 [프로그래머스][String][split][concat] (0) | 2020.06.05 |
---|---|
가운데 글자 가져오기 [프로그래머스][String][substring][charAt()] (0) | 2020.06.05 |
단어변환 [프로그래머스][String][DFS][Graph] (0) | 2020.06.05 |
네트워크 [프로그래머스][DFS][graph] (0) | 2020.06.05 |
타겟 넘버 [프로그래머스][DFS] (0) | 2020.06.05 |