[LeetCode] 997. Find the Town Judge

원숭2·2022년 1월 25일

LeetCode

목록 보기
16/51
post-thumbnail

문제

풀이

문제의 조건은 크게 2가지이다.
1) Town Judge는 모두에게 신뢰를 받는다.
2) Town Judge는 누구도 신뢰하지 않는다.

  1. 먼저 len(trust) == 0 인 경우를 해결함.
    (사람이 1명이면 그 사람이 Town Judge이고, 그 이상이면 불가능)
  2. 아니면 dictionary를 만들고 for문을 돌려 사람 별 받는 신뢰의 수를 체크함.
  3. items, sort함수와 lambada 식을 사용하여 사람 별 받는 신뢰의 수를 기준으로 내림차순 정렬.
  4. 조건 1에 의해 받는 신뢰의 최댓값이 n-1이 되지 않으면 -1 return.
  5. 그렇지 않을경우 조건2 확인을 위해 for문을 돌며 최대 신뢰를 받은 사람이 신뢰를 보냈는지 확인함.

코드

class Solution:
    def findJudge(self, n: int, trust: List[List[int]]) -> int:
        if trust == [] :
            if n == 1 :
                return 1
            else :
                return -1
        else :
            board = dict()
            
            for t in trust :
                if t[1] in board.keys() :
                    board[t[1]] += 1
                else :
                    board[t[1]] = 1
            
            tmp = sorted(list(board.items()), key = lambda x : -x[1])
            print(tmp)
            
            if tmp[0][1] == n-1 :
                for t in trust :
                    if t[0] == tmp[0][0] :
                        return -1
                else :
                    return tmp[0][0]
            else :
                return -1

0개의 댓글