https://www.acmicpc.net/problem/9046
문제의 알고리즘보다 문자열을 입력받는 cin을 기억하고자 블로그를 작성한다.
공백포함 문자열을 입력받기 위해 getline(cin, str)을 사용했는데
예제에서 3을 문자열로 입력받아서 다음 문자열을 입력받지 못하였다.
이에 대한 해결은 cin.ignore() 을 사용하는 것이다.
이 함수는 입력 버퍼를 비워주는 역할을 수행한다
이를 사용하지 않으면 "\n"을 입력받을 수 있기 때문이다
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <stack>
#include <tuple>
#include <set>
#include <unordered_map>
#include <map>
#include <cmath>
#include <sstream>
#include <list>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
cin.ignore();
while(t--) {
string str;
getline(cin, str);
int arr[27] = { 0, };
int mcnt = 0;
for (int i = 0; i < str.size(); i++) {
if (str[i] == ' ')
continue;
arr[str[i] - 'a']++;
mcnt = max(mcnt, arr[str[i] - 'a']);
}
int flag = 0; char c;
for (int i = 0; i < 26; i++) {
if (arr[i] == mcnt) {
if (flag == 0) {
c = i + 'a';
flag = 1;
}
else {
c = '?';
break;
}
}
}
cout << c << "\n";
}
}