2023년 03월 22일 수요일 - PO 꿀잼


오늘 올려볼 문제는 2492번 Minimum Score of a Path Between Two Cities 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

왜 아직도 수욜이니


입력


사진에서도 볼 수 있듯이 int 1개와 2차원 int 배열 1개 입력으로 들어온다.



풀이 및 코드


1번 노드부터 n번 노드까지 있는 그래프가 있다.

roads를 통해서 이어져있는 길과 길의 길이를 입력으로 준다.

이 때 1번 노드부터 n번 노드로 가는 길 중에 가장 짧은 노드 사이의 거리의 길이를 구하는 문제이다. (설명하기가 힘들다..)


오늘은 처음부터 정답을 생각해냈다.

Union Find로 1번 노드와 연결된 노드들을 구하고 최소값을 구했다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int minScore(int n, int[][] roads) {
        int[] arr = new int[n + 1];
        
        for(int i = 0; i < n + 1; i++) arr[i] = i;
        
        for(var road : roads) {
            int a = findUnion(arr, road[0]);
            int b = findUnion(arr, road[1]);
            
            if(a < b) arr[b] = a;
            else arr[a] = b;
        }
        
        int result = Integer.MAX_VALUE;
        
        for(var road : roads) {
            if(findUnion(arr, road[0]) == 1) result = Math.min(result, road[2]);
        }
        
        return result;
    }
    
    private int findUnion(int[] arr, int n) {
        if(arr[n] == n) return n;
        
        return findUnion(arr, arr[n]);
    }
}




제출 화면

leetcode 문제 맞았습니다


어후 요즘 너무 졸려


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts