[LeetCode] Find the Town Judge

아르당·약 9시간 전

LeetCode

목록 보기
214/216
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

마을에 1부터 n까지 번호가 매겨진 사람들이 있다. 이 사람들 중 한 명이 마을의 비밀 판사라는 소문이 있다.

만약 마을에 판사가 있다면, 다음과 같은 결론이 나온다.

  1. 마을 판사는 아무도 믿지 않는다.
  2. 마을 판사를 제외한 모든 사람이 마을 판사를 믿는다.
  3. 조건 1과 2를 만족하는 사람은 정확히 한 명이다.

주어진 배열 trust에서 trust[i] = [ai, bi]는 ai로 표시된 사람이 bi로 표시된 사람을 신뢰한다는 것을 의미한다. trust 배열에 신뢰 관계가 존재하지 않으면 해당 신뢰 관계는 존재하지 않는다.

판사가 존재하고 식별이 가능한 경우 해당 판사의 라벨을 반환하고, 그렇지 않다면 -1을 반환해라.

Example

#1
Input: n = 2, trust = [[1, 2]]
Output: 2

#2
Input: n = 3, trust = [[1, 3], [2, 3]]
Output: 3

#3
Input: n = 3, trust = [[1, 3], [2, 3], [3, 1]]
Output: -1

Constraints

  • 1 <= n <= 1000
  • 0 <= trust.length <= 10^4
  • trust[i].length == 2
  • trust의 모든 쌍은 고유하다.
  • ai != bi
  • 1 <= ai, bi <= n

Solved

class Solution {
    public int findJudge(int n, int[][] trust) {
        if(trust.length < n - 1){
            return -1;
        }

        int[] indegree = new int[n + 1];
        int[] outdegree = new int[n + 1];

        for(int[] vertex : trust){
            outdegree[vertex[0]]++;
            indegree[vertex[1]]++;
        }

        for(int i = 1; i <= n; i++){
            if(indegree[i] == n - 1){
                if(outdegree[i] == 0){
                    return i;
                }else{
                    return -1;
                }
            }
        }

        return -1;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글