프로그래머스 알고리즘 Level 1 과일 장수

2023. 1. 23. 01:28알고리즘/문제

https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

설명은 길지만 간단하게 말하면

사과 한 상자에 m개씩 담아서 상자의 가장 작은 사과 가치 X m개를 하면 1개 상자의 값이다.

score 를 m개씩 담아서 값을 매기고 그 값을 다 더한다는 문제이다.

 

먼저 score를 정렬해서 총 개수가 m개로 나누었을때 나머지가 0이 되도록 자르고 나머지는 버린다.

그리고 m개로 잘라서 각각 리스트로 만든다.

묶음으로 나온 각 list 의 가장 작은 값을 구해서

다 더한다.

class Solution {
    fun solution(k: Int, m: Int, score: IntArray): Int =
        score.map { it }
            .sortedDescending()
            .subList(0, score.size - score.size % m)
            .chunked(m)
            .map { list ->
                list.minOf { it } * m
            }
            .sumOf { it }
}