From 477090aa269c551a1a2a0f1f8b0ce105275d6154 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Tue, 24 Jan 2023 15:35:00 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=2024.=20=EC=98=A4?= =?UTF-8?q?=ED=9B=84=203:34:58?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/여행경로/solution.java | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 programmers/여행경로/solution.java diff --git a/programmers/여행경로/solution.java b/programmers/여행경로/solution.java new file mode 100644 index 0000000..8ef44c5 --- /dev/null +++ b/programmers/여행경로/solution.java @@ -0,0 +1,47 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/43164 + +import java.util.*; +class Solution { + String[] als; + boolean done; + public String[] solution(String[][] tickets) { + String[] answer = {}; + boolean[] visit = new boolean[tickets.length]; + Arrays.sort(tickets, new Comparator () { + @Override + public int compare(String[] o1, String o2[]) { + return (o1[0].compareTo(o2[0])!=0)?o1[0].compareTo(o2[0]):o1[1].compareTo(o2[1]); + } + }); + for(int a = 0; a < tickets.length; a++) { + if(!tickets[a][0].equals("ICN")) continue; + ArrayList al = new ArrayList<>(); + al.clear(); + al.add(tickets[a][0]); + visit[a] = true; + dfs(a, tickets, visit, 1, al); + visit[a] = false; + } + return als; + } + private void dfs(int pos,String[][] tickets, boolean[] visit, int depth, ArrayList al){ + int neoDepth = depth+1; + if(!done && depth == tickets.length) { + al.add(tickets[pos][1]); + done = true; + als = al.toArray(String[]::new); + } + else if(!done && al.size() < tickets.length){ + for(int a = 0; a < tickets.length; a++){ + if(a == pos) continue; + if(!visit[a] && tickets[pos][1].equals(tickets[a][0])) { + visit[a] = true; + al.add(tickets[a][0]); + dfs(a,tickets,visit,neoDepth,al); + al.remove(depth); + visit[a] = false; + } + } + } + } +} \ No newline at end of file