반응형
문제
알파벳 대소문자로 이루어진 단어가 주어진다.
이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.
단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다.
주어진 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다.
단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 '?'를 출력한다.
풀이
#include <iostream>
#include <string> // std::stirng, string.lenght()
#include <utility> // std::pair
#include <algorithm> // std::sort
int main(void) {
std::string word;
std::cin >> word;
std::pair<int, char> alphabet[26];
for (int i = 0; i < word.length(); ++i) {
if (word[i] >= 'A' && word[i] <= 'Z') {
++alphabet[word[i] - 'A'].first;
}
else if (word[i] >= 'a' && word[i] <= 'z') {
++alphabet[word[i] - 'a'].first;
}
}
for (int i = 0; i < 26; ++i) {
alphabet[i].second = i + 'A';
}
std::sort(alphabet, alphabet + 26);
if (alphabet[25].first == alphabet[24].first) {
std::cout << "?";
}
else {
std::cout << alphabet[25].second;
}
return 0;
}
출처: BAEKJOON
반응형
'C++ > BAEKJOON' 카테고리의 다른 글
[C++] BAEKJOON (2941) 크로아티아 알파벳 (0) | 2020.12.02 |
---|---|
[C++] BAEKJOON (1152) 단어의 개수 (0) | 2020.11.07 |
[C++] BAEKJOON (10809) 알파벳 찾기 (0) | 2020.10.25 |
[C++] BAEKJOON (1065) 한수 (0) | 2020.10.20 |
[C++] BAEKJOON (4673) 셀프 넘버 (0) | 2020.10.18 |