포스트

프로그래머스 Lv.1 - 과일 장수

출처: https://school.programmers.co.kr/learn/courses/30/lessons/135808

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 프로그래머스 Lv.1 - 과일 장수
// https://school.programmers.co.kr/learn/courses/30/lessons/135808
//
// [문제]  사과 m개씩 한 상자, 상자 가격 = (상자 최저점)*m. 최대 이익을 반환
// [제약]  3 ≤ k ≤ 9 / 3 ≤ m ≤ 10 / 7 ≤ score 길이 ≤ 1,000,000 / 1 ≤ score[i] ≤ k
// [입출력]  k=3,m=4,[1,2,3,1,2,3,1] → 8 / k=4,m=3,[...] → 33
//
// 풀이: 내림차순 정렬하면 매 m번째 원소가 그 상자의 최저점.
//        그 값들에 m을 곱해 합산(남는 사과는 자동 제외) — O(n log n)

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int k, int m, vector<int> score) {
    sort(score.rbegin(), score.rend());
    int answer = 0;
    for (int i = m - 1; i < (int)score.size(); i += m) {
        answer += score[i] * m;
    }
    return answer;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.