관리 메뉴

有希

LeetCode/Find the Town Judge 본문

프로그래밍/알고리즘+코딩테스트

LeetCode/Find the Town Judge

有希. 2022. 4. 30. 02:38

인자로 주어지는 n명의 사람들 중 한 명이 judge이고 n-1명은 이 사람을 믿는다. 는 것이 맞으면 해당 사람의 번호를 return하고 조건에 부합하지 않으면 -1을 return하는 문제.

vector 2개를 둬서 등징횟수 세는 용도, 믿는 count 세는 용도로 쓴다.

judge는 아무도 믿지 않으므로 등장횟수는 0, 믿음 받은 count는 자기 자신을 제외한 마을 사람들 모두 이므로 n-1이 되어야 한다. 위 조건에 해당하지 않으면 judge가 없으므로 -1이다.

class Solution {
public:
    int findJudge(int n, vector<vector<int>>& trust) {
        //idea is to count indegree of each vertices
        //if indegree is n-1 means its a judge
        vector<int>indegree(n+1,0);
        vector<int>outdegree(n+1,0);
        
        if(trust.size()==0 && n==1)
            return true;
        
        for(int i=0;i<trust.size();i++)
        {
            indegree[trust[i][1]]++;
            outdegree[trust[i][0]]++;     
        }
        
        for(int i=0;i<n+1;i++)
        {
            if(indegree[i]==n-1 && outdegree[i]==0)
                return i;
        }
        return -1;
    }
};

'프로그래밍 > 알고리즘+코딩테스트' 카테고리의 다른 글

HackerRank/Time Conversion  (0) 2022.05.01
LeetCode/ Jump Game  (0) 2022.04.30
LeetCode/Spiral Matrix  (0) 2022.04.30
LeetCode/Pow(x,n)  (0) 2022.04.29
LeetCode/Group Anagrams  (0) 2022.04.20