def solution(k, m, score):
answer = 0
score.sort(reverse=True)
for i in range(len(score) // m):
answer += score[m-1+(m *i)] * m
return answer
#일단 큰 사과부터 담아야함.
#정렬을 해서 그 인덱스가 최악의 사과가 되겠지.
score 배열 내림차순으로 정렬.
첫번쨰 상자 최악의 사과는 m-1번 인덱스에 위치
두번쨰 상자 최악의 사과는 m-1 + m 번 인덱스에 위치
세번쨰 상자 최악의 사과는 m-1 + 2m번 인덱스에 위치.
즉 일반식 세울 수 있다.
그렇다면 for문은 몇회 반복해야 하는가?
score배열의 길이에서 상자가 만들어지는 수. len(score)//m번 반복하면 된다.
'파이썬 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 LV2 - 점프와 순간 이동. (0) | 2023.04.03 |
---|---|
프로그래머스 lv 2 - 최소값 만들기 (0) | 2023.04.03 |
프로그래머스 lv1 - 추억점수. (0) | 2023.04.03 |
프로그래머스 LV2 - 올바른 괄호 (0) | 2022.11.08 |
댓글