로또의 최고 순위와 최저순위
로또번호와 알아볼 수 없는 숫자의 최고 순위와 최저 순위를 반환해야한다.
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()
}
}