본문 바로가기
프로그래밍/LeetCode

C++ 997. Find the Town Judge(Leet Code)

by devsu 2020. 6. 29.

Leet Code_997. Find the Town Judge

graph

 

https://leetcode.com/problems/find-the-town-judge/

 

문제 해석

 

이 문제를 풀기위해 이해해야 할 내용은 다음과 같습니다.

 

목표

마을 판사 찾기

방법

1. 판사는 아무도 믿지 않는다.

2. 모든 사람들이 믿어야 한다.

 

결과

마을 판사 찾기

 

통과한 코드

class Solution {
public:
    int findJudge(int N, vector<vector<int>>& trust) {
        map<int, int> s;
        set<int> se;
    for (int i = 0; i < trust.size(); i++)
    {
         s[trust[i][1]]++;
        se.insert(trust[i][0]);
    }
    for (int i = 1; i <= N; i++)
    {
        if (s[i] == N - 1 && se.find(i) == se.end())
            return i;
    }
    return -1;
    }
};

map으로 사람들이 믿는 사람의 번호를  counting한다.

set으로 자신이 믿는사람있는지 counting한다.

map으로 N-1만큼 counting인지 확인하고 set이 없으면 판사.

 

다른 사람 코드

class Solution {
public:
    int findJudge(int N, vector<vector<int>>& trust) {
        if(N==1)
        {
            return 1;
        }
        int y=-1;
        int a[1001]={0};
        for(int i=0;i<trust.size();i++)
        {
            int k=trust[i][0];
            int j=trust[i][1];
            a[j]++;
            a[k]--;
        }
        
        for(int i=0;i<=1000;i++)
        {
            if(a[i]==N-1)
            {
                y=i;   
            }
        }
        return y;
    }
};

배열 하나로 처리했다

자신이 믿는 건 --;

다른사람이 믿는건 ++;

Count가 N-1이면 판사.

 

배열 하나로 간단하게 풀었다.

시간은 많이 차이나지는 않았지만 그래도 더 빠른 코드.

다음엔 조건이 있고 전체 Counting 하는 경우에 +- 계산으로 처리해야겠다.