728x90
문제의 핵심은 n개의 숫자 중에서 가장 큰 k개의 합을 구하는 것
정렬을 해서 뒤부터 k개를 골라 더하면 되는 간단한 문제이다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int Answer;
int main()
{
int T, test_case;
int n, k;
vector<int> arr;
cin >> T;
for (test_case = 0; test_case < T; test_case++) {
Answer = 0;
cin >> n >> k;
arr.assign(n, 0);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr.begin(), arr.end());
for (int i = n - 1; i >= n - k; i--) {
Answer += arr[i];
}
cout << "Case #" << test_case + 1 << endl;
cout << Answer << endl;
}
return 0;
}
n의 입력 범위가 정해지지 않아 vector를 이용했다.
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[NYPC] [2019 예선] 1. 최대 HP (0) | 2020.08.30 |
---|---|
[codeground] Practice. 11. 개구리 뛰기 (0) | 2020.08.26 |
[NYPC] [2019 예선 연습] 1. 비밀번호 검사 (0) | 2020.08.25 |
[codeground] Practice. 2. 프로그래밍 경진대회 (0) | 2020.08.22 |
[codeground] Practice. 1. 숫자 골라내기 (0) | 2020.08.21 |
댓글