재관이의 대량 할인

108번뇌·2021년 6월 23일

맞음

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.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글