728x90
문제 풀이
이 문제는 사과 리스트를 정렬 후, 박스 별 최저 가격의 사과를 찾아 답에 반영해주면 된다.
예를 들어 [1, 2, 3, 1, 2, 3, 1]의 사과 리스트에서 사과 4개씩 상자로 만든다면, 먼저 리스트 정렬을 내림차순으로 해준다.
[3, 3, 2, 2, 1, 1, 1]로 정렬된 사과 상자에서 크기 순으로 4개씩 자르면, [3, 3, 2, 2]로 사과 상자를 만들 수 있을 것이고, 이 경우 사과의 최저 가격인 2를 반영해 2 * 4 = 8이라는 사과 상자 가격의 답이 나오게 된다.
여기서, 규칙을 찾을 수 있는데, 4개씩 자를 경우, 인덱스는 3, 7, 11 ... 순으로 사과 상자가 나뉘게 될 것이다. 이 점을 참고하면, 반복문을 통해 문제를 해결할 수 있다.
정답 코드
C++
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int k, int m, vector<int> score) {
int answer = 0;
sort(score.rbegin(), score.rend());
for (int i = m; i < score.size() + 1; i += m)
answer += score[i - 1] * m;
return answer;
}
python
def solution(k, m, score):
answer = 0
score.sort(reverse = True)
for i in range(m, len(score) + 1, m) :
answer += score[i - 1] * m
return answer
728x90
'Algorithm > PS' 카테고리의 다른 글
[C++, python] 프로그래머스 - 숫자 짝궁 (0) | 2023.02.25 |
---|---|
[C++, python] 프로그래머스 - 명예의 전당(1) (0) | 2023.02.25 |
[C++, python] 프로그래머스 - 가장 가까운 작은 글자 (0) | 2023.02.25 |
[C++, python] 프로그래머스 - 크기가 작은 부분 문자열 (0) | 2023.02.25 |
[C++, python] BOJ, 백준 15992 - 1, 2, 3 더하기 7 (0) | 2023.02.25 |