TIL #24

loci·2024년 5월 24일
0

TIL

목록 보기
23/111


로또의 최고 순위와 최저순위

로또번호와 알아볼 수 없는 숫자의 최고 순위와 최저 순위를 반환해야한다.

0의 개수와 맞춘 개수를 각각 저장해 맞춘 순위를 최저, 0의 개수를 포함해 맞춘 순위를 최고에 넣어주었다.


나의 풀이

class Solution {
    fun solution(lottos: IntArray, win_nums: IntArray): IntArray {
        var answer: IntArray = intArrayOf()
        var unknown = lottos.count{it == 0}
        var count = 0
        if(unknown == 6){
            return intArrayOf(1, 6)
        }
        for( i in lottos){
            for(j in win_nums){
                if(i == j && i != 0){
                    count++
                }
            }
        }
        var rank = when(count) {
            6 -> 1
            5 -> 2
            4 -> 3
            3 -> 4
            2 -> 5
            else -> 6
        }
        
        answer += rank - unknown
        answer += rank
        return answer
    }
}

수정 ->

class Solution {
    fun solution(lottos: IntArray, win_nums: IntArray): IntArray {
        var unknown = lottos.count{it == 0}
        val matched = lottos.count { it in win_nums }

        if(unknown == 6){
            return intArrayOf(1, 6)
        }
     
        var rank = when(matched) {
            6 -> 1
            5 -> 2
            4 -> 3
            3 -> 4
            2 -> 5
            else -> 6
        }
        
        return intArrayOf(rank - unknown, rank)
    }
}

다른사람의 풀이

class Solution {
    fun solution(lottos: IntArray, winNums: IntArray): IntArray {
        return intArrayOf(
                (lottos.size.plus(1)) - lottos.filter { winNums.contains(it) || it == 0 }.size,
                (lottos.size.plus(1)) - lottos.filter(winNums::contains).size
        ).map { if (it > 6) it - 1 else it }.toIntArray()
    }
}
profile
편리한 개발자

0개의 댓글