2966번 - 찍기
브루트 포스문제로, 정답을 전부다 비교해보면 된다.
<정답 코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include<iostream> #include<vector> #include<string> using namespace std; int n; char ans[101]; int g[3]; vector<vector<pair<string,string>>> v(3); int checkAnswer(int p) { int grade = 0; int i = 0; int pos = 0; int size = v[p].front().first.size(); while (i < n) { if (ans[i] == v[p].front().first[pos]) { grade++; } i++; pos++; if (pos == size) { pos = 0; } } return grade; } int main() { //freopen("input.txt", "r", stdin); int grade = -1; scanf("%d", &n); scanf("%s", &ans); v[0].push_back({ "ABC","Adrian" }); v[1].push_back({ "BABC","Bruno" }); v[2].push_back({ "CCAABB","Goran" }); for (int i = 0; i < 3; i++) { g[i] = checkAnswer(i); if (grade < g[i]) { grade = g[i]; } } printf("%d\n", grade); for (int i = 0; i < 3; i++) { if (grade == g[i]) { cout << v[i].front().second << endl; //printf("%c\n", v[i].front().second); } } return 0; } | cs |
반응형