[프로그래머스] 여행경로 (java)

byeol·2023년 2월 24일
0
  1. 알파벳이 빠른 순서 해결하는 방법
    여행경로를 String에 " " 공백과 함께 넣고
    Collections.sort를 이용할 것!

  2. 티켓이 3장이면 visit배열과 같이 경로체크 배열도 3개다
    따라서 마지막에 남는 도착지 경로를 적을 수 없어서
    함수가 지저분하지만 계속 티켓의 마지막 경로도 함께 전달하였다.

그래서 마지막 DFS를 나가는 조건문에 이 도착지 정보를 공백과 함께 추가한다.

import java.util.*;
import java.io.*;

class Solution {

    static int n=0;
    static int[] visit;
    static ArrayList<String> list;
    
    public String[] solution(String[][] tickets) {
        
        n = tickets.length; // 행의 수 = 데이터 개수
        visit = new int[n];
        list = new ArrayList<>();
            
        for(int i=0;i<n;i++){
            if(tickets[i][0].equals("ICN")){
                visit[i]=1;
                DFS(i,tickets[i][1],"ICN",tickets,1);
                visit[i]=0;

            }
        }
        
        String[] best_rout ={};
        Collections.sort(list);
        String answer = list.get(0);
        best_rout = answer.split(" ");
        
        
    
   
        return best_rout;
        
    } //solution
    
    static void DFS(int start,String after, String result, String[][] tickets, int level){
        if(level==n){
         result=result+" "+after;
          list.add(result);
          return;
        }else{
            String[] trash= new String[n];
            for(int i=0;i<n;i++){
             if(tickets[start][1].equals(tickets[i][0]) && visit[i]==0){
                 visit[i]=1;
                 DFS(i,tickets[i][1],result+" "+tickets[start][1],tickets,level+1);
                 visit[i]=0;
             }//if
          }//for
        }//else
    }
}
    
    
    
profile
꾸준하게 Ready, Set, Go!

0개의 댓글