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 하는 경우에 +- 계산으로 처리해야겠다.
'프로그래밍 > LeetCode' 카테고리의 다른 글
C++ 641. Design Circular Deque(Leet Code) (0) | 2020.07.22 |
---|---|
C++ 925. Long Pressed Name(Leet Code) (0) | 2020.06.27 |
C++ 931. Minimum Falling Path Sum(Leet Code) (0) | 2020.06.26 |
C++ 1333. Filter Restaurants by Vegan-Friendly, Price and Distance(Leet Code) (0) | 2020.06.24 |
C++ 35. Search Insert Position(Leet Code) (0) | 2020.06.24 |