programmers_여행경로_java

2023. 3. 6. 19:46Algorithm/Programmers

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/43164

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {
    
    public static List<String> answerList;
    
    public String[] solution(String[][] tickets) {
        String[] answer = {};
        
        answerList = new ArrayList<>();
        
        boolean[] visited = new boolean[tickets.length];
        dfs(0, "ICN", tickets, tickets.length, visited, "ICN");
        
        Collections.sort(answerList); // 정답이 될수 있는것 정렬
        
        answer = answerList.get(0).split(" ");
        return answer;
    }
    
    public void dfs(int cnt, String now, String[][] tickets, int ticketsSize, boolean[] visited, String ans){
        if(cnt == tickets.length){ // 모든 티켓 탐색 완료
            answerList.add(ans);
            return;
        }
        
        for(int i = 0; i<ticketsSize; i++){
            if(!visited[i] && tickets[i][0].equals(now)){
                visited[i] = true;
                dfs(cnt+1, tickets[i][1], tickets,ticketsSize, visited, ans+" "+tickets[i][1]);
                visited[i] = false;
            }
        }
    }
}