❓ 과일 장수
(중략)
사과의 최대 점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어졌을 때, 과일 장수가 얻을 수 있는 최대 이익을 return하는 solution 함수를 완성해주세요.
💡 풀이
class Solution {
fun solution(k: Int, m: Int, score: IntArray): Int {
var answer: Int = 0
score.sortedDescending().chunked(m).forEach{
// println(it)
// case1: [3, 3, 2, 2], [1, 1, 1]
// case2: [4, 4, 4], [4, 4, 4], [2, 2, 2], [2, 1, 1]
if(it.size == m){
answer += it.minOrNull()!! * m
}
}
return answer
}
}
- score를 내림차순으로 정렬해준다.
- chunked() 메소드로 m개씩 배열을 나누어준 뒤, forEach로 각 요소들을 순회한다.
- chunked() 메소드는 인자로 받은 값 m씩 나누어 리스트로 반환한다. 만약 총 요소 수가 m의 배수가 아닌 경우에는 마지막 chunked 목록에는 m보다 적은 요소로 반환된다.
- 만약 it의 길이가 m과 같으면 it 내부의 가장 작은 값과 m과 곱한 값을 누적하여 answer에 더해 반환하면 된다.
cf) 반복문 내부에 프린트를 찍으면 출력 초과로 실패 할 수 있으니 주석 처리 해주자!
오랜만에 내 생각을 최대한 발휘하여 문제를 풀었다. 매우 뿌듯~!!
다음 문제가 다시 어려워져서 조금 두렵지만 차근차근 성장해나가자.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 모의고사 (Kotlin) (0) | 2024.06.21 |
---|---|
[프로그래머스] 행렬의 곱셈 (Kotlin) (0) | 2024.06.20 |
[프로그래머스] 명예의 전당 (1) (Kotlin) (2) | 2024.06.15 |
[프로그래머스] 가장 가까운 같은 글자 (Kotlin) (1) | 2024.06.15 |
[프로그래머스] 콜라문제 (Kotlin) (1) | 2024.06.14 |