997. Find the Town Judge
💡풀이
var findJudge = function (n, trust) {
let obj = {};
// 추가적으로 모든 사람이 judge를 믿는 경우 / 믿지 않는 경우를 생각했어야 함.
for (let k = 0; k < n; k++) obj[k + 1] = 0; // obj 프로퍼티의 value를 0으로 초기화
for (let i = 0; i < trust.length; i++) {
// obj[trust[i][0]] = 1;
// judge는 절대 첫 번째에 나올 수 없다.
obj[trust[i][0]]--;
// 또한 judge는 모든 사람의 신뢰를 얻고 있어야 한다.
obj[trust[i][1]]++;
}
console.log(obj);
for (const [key, value] of Object.entries(obj)) {
// if(value === 0) return key
// 그럼 judge는 모든 사람의 신뢰를 얻고 있으니 value는 항상 n-1일 것이다.
if (value === n - 1) return key;
}
return -1;
};
// Discuss
var findJudge = function (n, trust) {
const counts = new Array(n + 1).fill(0);
for (let [i, j] of trust) {
counts[i]--;
counts[j]++;
}
console.log(counts);
for (let i = 1; i < counts.length; i++) {
if (n - 1 === counts[i]) return i;
}
return -1;
};
// testCase
let n = 4;
let trust = [
[1, 3],
[1, 4],
[2, 3],
[2, 4],
[4, 3],
];
findJudge(n, trust);
📝정리
-
Directed Graph에 관련된 문제였다. 그러나 Graph에 대한 개념을 모르더라도 접근은 가능할 것 같았던 문제였다.
-
Hash를 사용하여 풀었다. 위에 주석 처리된 코드들은 내가 모든 사람이 judge를 믿지 않는 경우 / 믿는 경우를 판별하는 조건을 생각하지 못했을 때 적었던 코드들이다.
문제 링크
https://leetcode.com/problems/find-the-town-judge/
LeetCode GitHub
https://github.com/tTab1204/LeetCode/tree/main/%EC%A3%BC%EC%98%81
Author And Source
이 문제에 관하여(997. Find the Town Judge), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ken1204/997.-Find-the-Town-Judge저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)