# k = 3, m = 4, score = [1, 2, 3, 1, 2, 3, 1] -> 8
# [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있음
# (최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1
# => 8
# k = 4, m = 3, score = [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] -> 33
# 상자: [1, 1, 2] -> 가격: 1 x 3 = 3
# 상자: [2, 2, 2] -> 가격: 2 x 3 = 6
# 상자: [4, 4, 4] -> 가격: 4 x 3 = 12
# 상자: [4, 4, 4] -> 가격: 4 x 3 = 12
# => (1 x 3 x 1) + (2 x 3 x 1) + (4 x 3 x 2) = 33
## 의사코드 ##
# m개 만큼의 사과를 나눔
# 가격은 상자에 담긴 사과 중 가장 낮은 점수 x m
# score를 내림차순 정렬해서 점수가 높은 사과들부터 정렬
# 정렬된 score 리스트를 m개씩 나눔
# 가장 낮은 점수 x m x 상자 개수 -> answer += (가장 낮은 점수 x m) 으로 하면 상자 개수 곱할 필요 없음
통과한 코드
def solution(k, m, score):
answer = 0
# 점수가 높은 사과부터 내림차순 정렬
s = sorted(score, reverse=True)
for i in range(0, len(s), m): # i => 0부터 len(s)-1 까지 m씩 출력
box = s[i:i+m] # 점수가 높은 사과부터 한 상자에 m개씩 나눠 담음
# 한 상자의 가격 계산
if len(box) == m: # 사과가 m개씩 담긴 상자인 경우만
answer += min(box) * m # 상자의 사과 중 가장 낮은 점수 x m
return answer
-> 얻을 수 있는 최대 이익을 계산해야 하기 때문에 먼저 score를 점수가 높은 사과부터 내림차순으로 정렬하고, for문의 범위를 m개씩 구성
range의 증가폭을 지정해서 해당 값만큼 숫자 증가시키기
for 변수 in range(시작, 끝, 증가폭)
# 0 ~ 11까지 3씩 증가해서 출력
for i in range(0, 12, 3):
print(i)
"""
0
3
6
9
"""