끄적끄적 코딩
article thumbnail

가장 큰 수 5개의 합과 인덱스를 오름차순으로 출력하는 문제입니다.

vector<pair<int, int> > 형태로 값과 인덱스를 입력합니다.
먼저 값을 내림차순으로 정렬해서 5개의 값을 합한 후 출력해줍니다.
값을 합하면서 vector<int> index 벡터에 인덱스를 넣습니다.
그러면 큰 5개의 값의 인덱스가 벡터에 들어가게 됩니다.
이를 오름차순으로 정렬해준 뒤 출력해주었습니다.

 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
	int num;
	int sum = 0;
	vector<pair<int, int> > v;
	vector<int> index;

	for (int i = 1; i <= 8; ++i) {
		cin >> num;
		v.push_back(make_pair(num, i));
	}

	sort(v.begin(), v.end(), greater<pair<int, int> >());
	
	for (int i = 0; i < 5; ++i) {
		sum += v[i].first;
		index.push_back(v[i].second);
	}
	cout << sum << endl;

	sort(index.begin(), index.end());

	for (int i = 0; i < 5; ++i) {
		cout << index[i] << " ";
	}
	cout << endl;
	
	return 0;
}

검색 태그