문제 : https://www.acmicpc.net/problem/2303


[알고리즘풀이]

k번 째 사람마다 5개의 카드가 들어오면 모든 경우에 대해서 3중 for문으로 계산해보고 최대값과 k를 같이 저장한다. 

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<pair<int, int>> M;

int main(void) {
	int t, N[5];
	cin >> t;
	for (int k = 1; k <= t; k++) {
		for (int i = 0; i < 5; i++)
			cin >> N[i];
		int m = -1;
		for (int i = 0; i < 5; i++) {
			for (int j = i + 1; j < 5; j++) {
				for (int k = j + 1; k < 5; k++) {
					m = max(m, (N[i] + N[j] + N[k]) % 10);
				}
			}
		}
		M.push_back(make_pair(m, k));
	}
	sort(M.begin(), M.end());
	cout << M[t - 1].second;
}

 

+ Recent posts