알고리즘
백준 2303번 숫자 게임 C++
영춘권의달인
2022. 1. 8. 14:10
각 사람이 3장의 카드를 뽑는 경우의 합을 백트래킹을 통하여 모두 구하고, %10 연산을 통해 일의 자리만 비교하였다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
using namespace std;
typedef long long ll;
int n;
vector<vector<int>> v(1001, vector<int>(5));
int ans = -1;
int maxV = -1;
void BT(int num, int idx, int cnt, int sum) {
if (cnt >= 3) {
int res = sum % 10;
if (res >= maxV) {
maxV = res;
ans = num;
}
return;
}
for (int i = idx; i < 5; i++) {
BT(num, i + 1, cnt + 1, sum + v[num][i]);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 5; j++) {
cin >> v[i][j];
}
}
for (int i = 1; i <= n; i++) {
BT(i, 0, 0, 0);
}
cout << ans;
};