맞음
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIseXoKEUcDFAWN
#include <iostream>
#include <vector>
#include <algorithm>
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main()
{
int test_case; cin >> test_case;
for (int test = 1; test <= test_case; test++)
{
int seperate_case; cin >> seperate_case;
vector<int> vTemp; vTemp.clear();
vector<int> vTemp1; vTemp1.clear();
int iResut(0);
for (int i = 0; i < seperate_case; i++)
{
int iTemp; cin >> iTemp;
vTemp.emplace_back(iTemp);
}
sort(vTemp.begin(), vTemp.end(), [](int a, int b) {
return a > b;
});//내림차순 정렬입니다.
for (int i = 0; i < vTemp.size(); i++)
{
if (i % 3 == 2) continue;
vTemp1.emplace_back(vTemp[i]);//세마디 배수일 때마다 스킵합니다.
}
for (int i = 0; i < vTemp1.size(); i++)
{
iResut += vTemp1[i];
}
for (int i = 1; i <= test_case; i++)
{
cout << "#" << i << " " << iResut << endl;
}
cout << endl;
}
}
탐욕에서 정렬한번하고(내림차순)
3번째 배열 skip해주면 최대값 나오는게 idea.