[프로그래머스] 로또의 최고 순위와 최저 순위

Minsuk Jang·2021년 9월 4일
0

프로그래머스

목록 보기
43/48
post-thumbnail

문제 링크

🤔 풀이 방법

최고 순위와 최저 순위를 구분 짓는 방법은 아래와 같다

1. 최고 순위 = 일치하는 번호 + 알아볼 수 없는 번호(0)
2. 최저 순위 = 일치하는 번호

제한사항도 빡세지 않기 때문에 본인이 편한 방법으로 구현을 진행하면 된다.

💡 다른 사람 풀이

    fun solution1(lottos: IntArray, win_nums: IntArray): IntArray{
        return intArrayOf(
            lottos.size.plus(1) - lottos.filter { win_nums.contains(it) || it == 0 }.size,
            lottos.size.plus(1) - lottos.filter { win_nums .contains(it)}.size
        ).map { if(it > 6) it - 1 else it}.toIntArray()
    }

정말 깔끔한 코드이다!!

👉 소스 코드

class Solution {
    fun solution(lottos: IntArray, win_nums: IntArray): IntArray {
        var correct = 0
        var zero_count = 0

        lottos.forEach {
            if(win_nums.contains(it)){
                correct++
            }

            if(it == 0)
                zero_count++
        }

        val max = correct + zero_count
        val min = correct

        return intArrayOf(rank(max),rank(min))
    }

    private fun rank(v : Int) = when(v){
        6 -> 1
        5 -> 2
        4 -> 3
        3 -> 4
        2 -> 5
        else -> 6
    }
}
profile
Positive Thinking

0개의 댓글