[백준] 1157번
가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램 .
대,소문자를 구분하지 않는다.
단어의 길이 ≤1,000,000
출력 : 가장 많이 사용된 알파벳을 대문자로 출력
여러 개 존재 시 ? 를 출력
- 이 문제는 대소문자를 구분하지 않기 때문에 a,A를 index 0으로 생각하는 등 해서, 단어의 각 문자에 해당하는 count array의 각 index의 값을 증가시켜 각 character의 개수를 count한 배열을 생성하도록 한다.
- 가장 많이 등장한 character가 무엇인지 찾고 그 max 값을 찾는다.
- 다시 A~Z까지를 for문을 통해 돌며, MAX값을 갖는 character가 2개 이상이면 ? 를 출력하도록 한다.
#include <iostream>
#include <string>
char capital[50];
char non_capital[50];
int cnt_arr[50];
std::string inpu_str;
int main()
{
int arr_len = 'z' - 'a';
for (int i = 0; i <= arr_len; i++)
{
capital[i] = 'A'+i;
}
std::cin >> inpu_str;
for (int i = 0; i < inpu_str.size(); i++)
{
if (inpu_str[i] <= 'Z') {
cnt_arr[inpu_str[i] - 'A']++;
}
else {
cnt_arr[inpu_str[i] - 'a']++;
}
}
int my_max=0, max_idx,max_cnt=0;
// MAX 찾기
for (int i = 0; i <= arr_len; i++) {
if (cnt_arr[i] > my_max) {
my_max = cnt_arr[i];
max_idx = i;
}
}
for (int i = 0; i <= arr_len; i++) {
if (cnt_arr[i] == my_max)max_cnt++;
}
if (max_cnt > 1) std::cout << "?";
else printf("%c", capital[max_idx]);
}
Author And Source
이 문제에 관하여([백준] 1157번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ynoolee/백준-1157번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)