반응형
[문제 출처]
https://school.programmers.co.kr/learn/courses/30/lessons/135808
[문제 풀이]
사과 별로 점수가 있으며 이 사과들을 포장해 가장 최대 수익을 내는 것이 목표이다.
점수는 1점부터 k점까지로 분류되며, 한 상자에는 m개씩 담아서 포장한다.
한 상자의 이익은 그 상자에 있는 '가장 낮은 점수 x m'이 된다.
사과들을 팔아서 가장 최대 이익을 내는 경우를 구해야 한다.
큰 이익을 내기 위해서는 한 상자에서 가장 낮은 점수를 차지하게 되는 사과의 점수가 최대한 높아야 한다.
따라서 내림차순으로 정렬한 후에 m번째에 위치하는 사과의 점수를 m으로 곱해서 이익에 더해준다.
포장이 더 가능하다면 그 이후에 있는 m번째의 점수를 m 곱해 더해준다.
포장이 안될 때까지(m개의 사과가 남지 않을 때까지) 반복한다.
만일 m개보다 적게 사과가 있을 때는 0점이 더해지게 된다.
def solution(k, m, score):
answer = 0
score.sort(reverse=True)
for i in range(1,len(score)//m+1):
answer += score[m*i-1]*m
return answer
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 프로그래머스 Lv.1 콜라 문제 (0) | 2023.03.07 |
---|---|
[python/파이썬] 프로그래머스 Lv.1 푸드 파이트 대회 (0) | 2023.03.06 |
[python/파이썬] 프로그래머스 Lv.1 문자열 나누기 (0) | 2023.03.02 |
[python/파이썬] 백준 1543 문서 검색 (0) | 2023.02.27 |
[python/파이썬] 백준 1173 운동 (0) | 2023.02.24 |