- 대문자로 변경하는 toupper 사용
첫째 줄에 입력된 단어에서 가장 많이 사용된 알파벳을 대문자로 출력
#include<iostream>
#include<string>
int main() {
std::string str;
std::string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ?";
int arr[27] = {};
int max_cnt = 0, idx = 0;
std::cin >> str;
for (std::size_t i = 0; i < str.length(); i++) {
str[i] = toupper(str[i]);
arr[alpha.find(str[i])]++;
}
for (int i = 0; i < 27; i++) {
if (arr[i] == 0)
continue;
if (max_cnt == arr[i]) {
idx = 26;
continue;
}
if (max_cnt < arr[i]) {
max_cnt = arr[i];
idx = i;
}
}
std::cout << alpha[idx];
}
str -> 입력받을 문자열
alpha -> 대문자 알파벳 전체와 최대값이 여러 개일 경우 사용할 물음표 기호(?)
arr[27] -> 사용된 알파벳의 개수 저장
max_cnt -> 가장 많이 사용된 알파벳의 개수의 최대값
idx -> str의 위치를 나타내는 값 (ABCDEFGHIJKLMNOPQRSTUVWXYZ?)
-> idx = 26 이면, ?를 나타냄
toupper(str[i]) -> str배열에 있는 문자를 모두 대문자로 바꿔줌
ex) Mississipi
모두 대문자로 바꾸면 MISSISSIPI
alpha[i] | 값 | alpha.find(str[i]) | arr[alpha.find(str[i])] | arr[i] |
alpha[0] | A | alpha.find(str[0]) = M | arr[12] = 1 | arr[0] = 0 |
alpha[1] | B | alpha.find(str[1]) = I | arr[8] = 1 | arr[1] = 0 |
alpha[2] | C | alpha.find(str[2]) = S | arr[18] = 1 | arr[2] = 0 |
alpha[3] | D | alpha.find(str[3]) = S | arr[18] = 2 | arr[3] = 0 |
alpha[4] | E | alpha.find(str[4]) = I | arr[8] = 2 | arr[4] = 0 |
alpha[5] | F | alpha.find(str[5]) = S | arr[18] = 3 | arr[5] = 0 |
alpha[6] | G | alpha.find(str[6]) = S | arr[18] = 4 | arr[6] = 0 |
alpha[7] | H | alpha.find(str[7]) = I | arr[8] = 3 | arr[7] = 0 |
alpha[8] | I | alpha.find(str[8]) = P | arr[15] = 1 | arr[8] = 4 |
alpha[9] | J | alpha.find(str[9]) = I | arr[8] = 4 | arr[9] = 0 |
alpha[10] | K | arr[10] = 0 | ||
alpha[11] | L | arr[11] = 0 | ||
alpha[12] | M | arr[12] = 1 | ||
alpha[13] | N | arr[13] = 0 | ||
alpha[14] | O | arr[14] = 0 | ||
alpha[15] | P | arr[15] = 1 | ||
alpha[16] | Q | arr[16] = 0 | ||
alpha[17] | R | arr[17] = 0 | ||
alpha[18] | S | arr[18] = 4 | ||
alpha[19] | T | arr[19] = 0 | ||
alpha[20] | U | arr[20] = 0 | ||
alpha[21] | V | arr[21] = 0 | ||
alpha[22] | W | arr[22] = 0 | ||
alpha[23] | X | arr[23] = 0 | ||
alpha[24] | Y | arr[24] = 0 | ||
alpha[25] | Z | arr[25] = 0 |
가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력
-> 가장 많이 사용된 알파벳은 I(8번째)와 S(18번째)로 4번씩 사용됨
그러므로, ?(26번째)를 출력
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #2908_상수_c++ (0) | 2021.10.26 |
---|---|
baekjoon #1152_단어의 개수_c++ (0) | 2021.10.26 |
baekjoon #10809_알파벳 찾기_c++ (0) | 2021.10.25 |
baekjoon #11720_숫자의 합_c++ (0) | 2021.10.25 |
baekjoon #1065_한수_c++ (0) | 2021.10.25 |