문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
마을에 1부터 n까지 번호가 매겨진 사람들이 있다. 이 사람들 중 한 명이 마을의 비밀 판사라는 소문이 있다.
만약 마을에 판사가 있다면, 다음과 같은 결론이 나온다.
주어진 배열 trust에서 trust[i] = [ai, bi]는 ai로 표시된 사람이 bi로 표시된 사람을 신뢰한다는 것을 의미한다. trust 배열에 신뢰 관계가 존재하지 않으면 해당 신뢰 관계는 존재하지 않는다.
판사가 존재하고 식별이 가능한 경우 해당 판사의 라벨을 반환하고, 그렇지 않다면 -1을 반환해라.
#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
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;
}
}