Problem From.
https://leetcode.com/problems/find-the-town-judge/
오늘 문제는 꽤나 간단한 문제로 주어진 조건을 만족하는 값이 있으면 그 값을 반환하고 없으면 -1 을 반환하는 문제였다.
그 조건은
1. 마을 judge 는 아무도 신뢰하지 않는다
2. 모든 마을사람들 (judge 제외) 은 judge 를 신뢰한다.
3. 조건 1,2 를 만족하는 사람은 한명씩 밖에 없다.
trust 배열을 순회하면서 map 에 조건 2을 만족하는 사람을 모두 추가한다.
다시 map 을 순회하면서 조건 1에 부합하지 않는 사람을 제외한다.
마지막으로 map 에 한명이 남아있으며 그 trust 의 수가 총 마을 사람들 수의 -1 이면 반환한다.
이 문제는 특별히 어려울 것이 없이 주어진 조건만을 잘 만족하면 풀 수 있는 문제였다.
class Solution {
fun findJudge(n: Int, trust: Array<IntArray>): Int {
if(n == 1) return 1
val map = hashMapOf<Int, Int>()
trust.forEach { person ->
map.put(person[1], map.getOrDefault(person[1], 0) + 1)
}
trust.forEach { person ->
map.remove(person[0])
}
if(map.size == 1) {
map.forEach {
if(it.value == n-1) return it.key
}
}
return -1
}
}
위 풀이의 시간복잡도는 O(kN) 이 된다.