https://school.programmers.co.kr/learn/courses/30/lessons/135808
class Solution {
fun solution(k: Int, m: Int, score: IntArray): Int {
var answer: Int = 0
var appleList = listOf<Int>()
var appleBox = mutableListOf<Int>()
appleList = score.sortedDescending()
for(i in 0 until appleList.size) {
if(appleBox.size < m) {
appleBox.add(appleList[i])
if(appleBox.size == m) {
answer += appleBox.minOf{it} * m
appleBox.clear()
}
}
}
return answer
}
}
이런식으로 풀었더니 시간이 길게 걸리는게 275ms가 있었다,,,
이런식으로는 안되겠다 싶어 좀 더 꼼꼼히 보니 결국엔 사실 m사이즈만큼의 각 배열에서 마지막 숫자만큼만 m과 곱해준다는 규칙성을 발견하고 코드를 다시 수정했다.
class Solution {
fun solution(k: Int, m: Int, score: IntArray): Int {
var answer: Int = 0
score.sortDescending()
var lastNum = 0
score.forEach{
lastNum++
if(lastNum%m == 0){
answer+= it*m
}
}
return answer
}
}
배열에 굳이 넣을 필요없이 m 에 딱 떨어지는 숫자일 때 마다 m에 딱 떨어지는 숫자에 m을 곱해주면 된다.
효율이 2배이상 좋아졌다,,
'Code KATA' 카테고리의 다른 글
Programmers 소수 만들기 with Kotlin (0) | 2023.12.06 |
---|---|
Programmers 완전 탐색 모의고사 with Kotlin (1) | 2023.12.05 |
Programmers 카드 뭉치 with Kotlin (0) | 2023.12.01 |
Programmers 2016년 with Kotlin (0) | 2023.11.30 |
Programmers 명예의 전당 with Kotlin (1) | 2023.11.29 |