이 문제는 그리디하게 접근해야 한다. 왜냐하면 박스의 최소 점수를 높이기 위해서는 최대한 높은 점수의 사과를 선택해야 하기 때문이다.
문제를 푸는 데 k는 필요 없다.
그리디하게 풀기 위하여 score를 내림차순으로 정렬한 뒤, 점수 계산 공식에 의거하여 그 순간의 이익을 구한다.
그리고 그 이익들을 전부 합하면 사과 장수가 얻을 수 있는 최대 이익이 된다.
def calc(start,m,score):
return min(score[start:start+m])*m
def solution(k, m, score):
answer = 0
score.sort(reverse=True)
start = 0
while start+m <= len(score):
answer += calc(start,m,score)
start += m
return answer