Daily LeetCode Challenge - 997. Find the Town Judge

Min Young Kim·2023년 1월 23일
0

algorithm

목록 보기
55/198

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) 이 된다.

profile
길을 찾는 개발자

0개의 댓글