문제 확인

 

프로그래머스

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

programmers.co.kr

나의 풀이

  • 박스에 담을 사과 개수가 $m$으로 고정돼 있어 내림차순 정렬만으로도 최대 가격을 설정할 수 있다.
  • 내림차순으로 정렬하게 되면 매번 $m$ 번째 사과의 점수가 전체 사과 상자의 가격을 결정한다.
# 점수가 가장 낮은 사과가 가격을 결정
# 따라서 점수가 높은 사과끼리 묶어야 최대 가격 설정 가능
def solution(k, m, score):
    answer = 0
    score.sort(reverse = True)
    # idx 대소 비교 과정에서 계속 계산되기 때문에 미리 계산
    score_len = len(score)
    # 내림차순으로 정렬하면, 묶음에서 가장 가치 없는 사과가 마지막 idx에 위치하게 됨
    answer = [score[i + m - 1] * m for i in range(0, score_len, m) if (i + m - 1) < score_len]
    return sum(answer)