프로그래머스 알고리즘 Level 1 ( 2019 KAKAO BLIND RECRUITMENT 실패율 문제 )
2023. 1. 26. 19:20ㆍ알고리즘/문제
https://school.programmers.co.kr/learn/courses/30/lessons/42889#qna
풀이 - 성공
class Solution {
fun solution(N: Int, stages: IntArray): IntArray {
var answer = intArrayOf()
val failureRateList = mutableListOf<Double>()
for (i in 1..N) {
if (stages.count { it >= i } == 0) {
failureRateList.add(0.0)
} else {
val rate = (stages.count { it == i }.toDouble() / stages.count { it >= i }.toDouble())
failureRateList.add(rate)
}
}
answer = failureRateList
.withIndex()
.asSequence()
.sortedByDescending { it.value }
.groupBy { it.value }.values
.map { it.map { it.index + 1 }.sorted() }
.flatten().toIntArray()
return answer
}
}
한번에 성공을 못했는데 그 이유가 실패율을 구할때 분모가 0이 되는 경우가 있어서였다.
실패율을 구하는 스테이지의 수가 사람들의 스테이지 최대값보다 큰 경우
예를 들어 N = 7 stages = ( 5,5,5,5,5 ) 의 경우 6번 스테이지와 7번 스테이지는 0/0으로 나누기때문에 불가능
그래서 처음에 실패율을 구할때 분기를 주고 구했습니다.
실패율을 구하고
나머지 과정은 함수형으로 구했습니다.
'알고리즘 > 문제' 카테고리의 다른 글
프로그래머스 알고리즘 Level 1 코틀린 푸드파이트 대회 (0) | 2023.01.27 |
---|---|
프로그래머스 알고리즘 Level 1 숫자 짝궁 코틀린 (0) | 2023.01.27 |
프로그래머스 알고리즘 Level 1 체육복 (0) | 2023.01.26 |
프로그래머스 알고리즘 Level 1 2019 카카오 개발자 겨울 인턴쉽 크레인 인형뽑기 게임 (0) | 2023.01.25 |
프로그래머스 알고리즘 Level 1 코틀린 2021 KAKAO BLIND RECRUITMENT신규 아이디 추천 (0) | 2023.01.25 |