https://school.programmers.co.kr/learn/courses/30/lessons/77484
더보기
문제 혀가 길어서 그렇지 생각해보면 쉬움.
가려놓은건 틀렸을 수도 있고 맞을 수도 있다.
그럼 가려지지 않은 번호에서 맞은 값을 먼저 도출하고,
최대로 많이 맞았을 때(가려진 번호가 모두 정답일 때), 최소로 맞았을 때(가려진 번호가 모두 오답일 때)의 두 가지 가능성을 고려한다.
즉, 맞은 값 + 가려진 번호의 수 = 최댓값
맞은 값 = 최솟값
이렇게 값을 도출하면 된다.
숫자는 6개이므로, 도출된 값에서 + 1을 하여 순위를 결정한다.
다만, 6등은 1개를 맞거나, 혹은 0개일 때 결정되기 때문에 이 케이스를 if문으로 나누어 처리한다.
class Solution {
fun solution(lottos: IntArray, win_nums: IntArray): IntArray {
var answer = IntArray(2)
var realAnswer = 0
var unKnownAnswer = 0
lottos.forEach {
if(it == 0) {
unKnownAnswer += 1
} else {
if(win_nums.contains(it)) {
realAnswer += 1
}
}
}
answer[0] = if((realAnswer + unKnownAnswer) > 0) {
6 - (realAnswer + unKnownAnswer) + 1
} else {
6 - (realAnswer + unKnownAnswer)
}
answer[1] = if(realAnswer > 0) {
6 - realAnswer + 1
} else {
6 - realAnswer
}
return answer
}
}
반응형
'스터디(programmers)' 카테고리의 다른 글
Kotlin] 프로그래머스 lv.2, 기능 개발 (0) | 2023.03.20 |
---|---|
Java] 프로그래머스 lv.1, [1차] 비밀지도 (0) | 2023.03.08 |
Kotlin] 프로그래머스 lv.1, 가장 가까운 같은 글자 (0) | 2023.02.22 |
Kotlin] 프로그래머스 lv.1, 명예의 전당 (1) (0) | 2023.02.15 |
Java] 프로그래머스 lv.1, 부족한 금액 계산하기 (0) | 2023.02.09 |