728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 필기시험의 문제의 수 N이 주어진다. (1 ≤ N ≤ 100)
둘째 줄에는 시험의 정답이 주어진다.
출력
첫째 줄에 가장 많은 문제를 맞춘 사람이몇 문제를 맞추었는지 출력한다.
다음 줄에는 가장 많은 문제를 맞춘 사람의 아이디를 한 줄에 하나씩 출력한다. 상근이의 아이디는 Adrian, 창영이의 아이디는 Bruno, 현진이의 아이디는 Goran이다. 아이디 여러 개를 출력하는 경우에는 상근이, 창영이, 현진이 순서로 출력한다.
소스코드
#include <iostream> #include <string> using namespace std; int main(void) { int n, max = -1, len, ans[3] = { 0, }, meta[3][6] = { {0,1,2},{1,0,1,2},{2,2,0,0,1,1,} }; string str; cin >> n; cin >> str; len = str.length(); for (int i = 0; i < 3; i++) { for (int j = 0; j < len; j++) { if (i == 0 && str[j] == (char)(65 + meta[i][j % 3])) ans[i]++; else if (i == 1 && str[j] == (char)(65 + meta[i][j % 4])) ans[i]++; else if (i == 2 && str[j] == (char)(65 + meta[i][j % 6])) ans[i]++; } } for (int i = 0; i < 3; i++) if (max < ans[i]) max = ans[i]; cout << max << '\n'; for (int i = 0; i < 3; i++) { if (ans[i] == max) { switch (i) { case 0: cout << "Adrian\n"; break; case 1: cout << "Bruno\n"; break; case 2: cout << "Goran\n"; break; default: break; } } } }
Tip
그냥 무식하게 세 사람의 문제 풀이 메타를 비교해가면서 몇 개가 적중했는지 카운팅하는 문제로, 문자열 처리 조금과 배열을 이용하면 쉽게 풀 수 있다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 1531 - 투명 (0) | 2018.06.05 |
---|---|
백준] 1855 - 암호 (0) | 2018.06.04 |
백준] 2947 - 나무 조각(COCI 2008/2009) (0) | 2018.05.28 |
백준] 3023 - 마술사 이민혁(COCI 2006/2007) (0) | 2018.05.27 |
백준] 2877 - 4와 7(COCI 2010/2011) (0) | 2018.05.25 |