백준/심화
1157: 단어 공부 / C++
Koalitsiya
2023. 3. 9. 18:02
문제
풀이
일단 알파벳의 총 갯수만큼의 크기를 가지는 배열을 0으로 초기화해서 선언 후 모든 문자를 대문자로 변환시켜준다.
이후 각 알파벳의 번호를 인덱스로 가지는 값을 증가 시킨 다음, 가장 많이 사용된 알파벳의 사용 횟수와 인덱스를 저장하고 가장 많이 사용된 알파벳의 사용 횟수와 동일한 사용 횟수를 가지는 알파벳이 있는지 판별 후 가장 많이 사용된 알파벳의 개수가 1보다 크면 ?, 그렇지 않으면 해당 알파벳을 출력한다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s;
int max = 0, idx = 0, cnt = 0;
int alpha[26] = {0};
cin >> s;
transform(s.begin(), s.end(), s.begin(), ::toupper);
for (int i = 0; i < s.length(); i++)
alpha[s[i] - 65]++;
for (int i = 0; i < 26; i++)
if (max < alpha[i]) {
max = alpha[i];
idx = i;
}
for (int i = 0; i < 26; i++)
if (max == alpha[i]) cnt++;
if (cnt > 1) cout << "?";
else cout << (char)(idx + 65);
return 0;
}