문제의 조건은 크게 2가지이다.
1) Town Judge는 모두에게 신뢰를 받는다.
2) Town Judge는 누구도 신뢰하지 않는다.
- 먼저 len(trust) == 0 인 경우를 해결함.
(사람이 1명이면 그 사람이 Town Judge이고, 그 이상이면 불가능)- 아니면 dictionary를 만들고 for문을 돌려 사람 별 받는 신뢰의 수를 체크함.
- items, sort함수와 lambada 식을 사용하여 사람 별 받는 신뢰의 수를 기준으로 내림차순 정렬.
- 조건 1에 의해 받는 신뢰의 최댓값이 n-1이 되지 않으면 -1 return.
- 그렇지 않을경우 조건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