spring-comes-to-us / algorithm-comes-to-us

알고리즘 스터디!
0 stars 0 forks source link

[프로그래머스] 43164. 여행 경로 #42

Open yenzip opened 9 months ago

yenzip commented 9 months ago

문제 링크

image

ASak1104 commented 9 months ago

43164. 여행 경로

Java 풀이

```java import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.PriorityQueue; class Solution { static String START = "ICN"; Map> edges = new HashMap<>(10_000); List answer = new ArrayList<>(10_000); public String[] solution(String[][] tickets) { for (String[] ticket : tickets) { String u = ticket[0]; String v = ticket[1]; edges.computeIfAbsent(u, value -> new PriorityQueue<>()).add(v); edges.computeIfAbsent(v, value -> new PriorityQueue<>()); } travel(START); Collections.reverse(answer); return answer.toArray(String[]::new); } void travel(String u) { PriorityQueue edge = edges.get(u); while (!edge.isEmpty()) { travel(edge.poll()); } answer.add(u); } } ```

코멘트

yenzip commented 9 months ago

43164. 여행 경로

JAVA 코드 풀이

```java import java.util.*; class Solution { List answer = new ArrayList<>(); boolean[] visited = new boolean[10001]; public boolean dfs(String[][] tickets, String current, int count) { answer.add(current); if(count == tickets.length) { // 모든 항공권 사용 return true; } for(int i = 0; i < tickets.length; i++) { if(tickets[i][0].equals(current) && !visited[i]) { visited[i] = true; if(dfs(tickets, tickets[i][1], count + 1)) { return true; } visited[i] = false; // 백트래킹 answer.remove(answer.size() - 1); // 다른 경로 탐색 } } return false; } public String[] solution(String[][] tickets) { Arrays.sort(tickets, (a, b) -> a[1].compareTo(b[1])); dfs(tickets, "ICN", 0); return answer.toArray(new String[answer.size()]); } } ```

코멘트