본문 바로가기

알고리즘

[PGS] 프로그래머스 - 여행경로 (JAVA)

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

 

프로그래머스

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

programmers.co.kr

 

import java.util.*;

class Solution {
    static int[] visited;
    static PriorityQueue<String> pq;
    
    public void dfs(String cityName, String[][] tickets, String path, int node){
        if(node==tickets.length){
            //다 돌았다
            pq.add(path);
            return;
        }
        for(int i=0;i<tickets.length;i++){
            if(visited[i]==0 && cityName.equals(tickets[i][0])){
                visited[i] = 1; //방문
                dfs(tickets[i][1],tickets,path+","+tickets[i][1],node+1);
                visited[i] = 0; //백트래킹
            }
        }
        
    }
    public String[] solution(String[][] tickets) {
        visited = new int[tickets.length];
        pq = new PriorityQueue<>();
        
        dfs("ICN",tickets,"ICN",0);
        String tmp = pq.poll();
        String[] answer = {};
        
        answer = tmp.split(",");
        
        return answer;
    }
}

 

방문여부 확인하는 것을 잊지 말자 !!