본문 바로가기
알고리즘/문제 풀이 (출처: 프로그래머스)

[JAVA/DFS] 여행경로

by 이민우 2024. 2. 24.
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

 

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