Daily LeetCode Challenge - 2225. Find Players With Zero or One Losses

Min Young Kim·2022년 11월 29일
0

algorithm

목록 보기
35/198
post-thumbnail

Problem From.
https://leetcode.com/problems/find-players-with-zero-or-one-losses/

오늘 문제는 승리와 패배한 사람이 담겨있는 배열이 주어졌을때, 그 배열을 보고 한번도 지지 않은 사람과 단 한번만 진 사람을 가진 리스트를 반환하는 문제였다.

문제는 간단하게 배열을 처음부터 끝까지 검사하면서 HashMap 을 써서,
승자가 들어오면 value 에 0 패배한 사람이 들어오면 value 를 가져와서 1을 누적해주는 방식으로 풀었다.

class Solution {
    fun findWinners(matches: Array<IntArray>): List<List<Int>> {
        
        val loseMap = HashMap<Int, Int>()
        
        matches.forEach { match -> 
            loseMap.put(match[0], loseMap.getOrDefault(match[0], 0))
            loseMap.put(match[1], loseMap.getOrDefault(match[1], 0) + 1)
        }
        
        val noLose = loseMap.filter { it.value == 0 }.map { it.key }
        val oneLose = loseMap.filter { it.value == 1 }.map { it.key }
        
        return listOf(noLose.toList().sorted(), oneLose.toList().sorted())
        
    }
}

위 풀이의 시간복잡도는 O(n) 이 된다.

profile
길을 찾는 개발자

0개의 댓글