997. Find the Town Judge

10005 단어 leetcodeleetcode

💡풀이

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

좋은 웹페이지 즐겨찾기