문제 해결/BaekJoon
[백준] [C++] 1157번 단어 공부
WSLim_97
2023. 1. 19. 21:45
반응형
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
코드
#include <iostream>
using namespace std;
const int COUNT = 26;
int main()
{
string str;
int arr[COUNT] = { };
cin >> str;
int max = -1;
int maxIndex;
for (int i = 0; i < str.length(); i++)
{
str[i] = toupper(str[i]);
int num = str[i] - 65;
arr[num]++;
if (max < arr[num])
{
max = arr[num];
maxIndex = num;
}
}
int count = 0;
for (int i = 0; i < COUNT; i++)
{
if (max == arr[i])
count++;
}
if (count >= 2)
cout << "?";
else
cout << (char)(maxIndex + 65);
return 0;
}
풀이
단어가 주어졌을 때 가장 많이 사용된 알파벳이 무엇인지 출력하는 문제이다. 단, 대문자와 소문자는 구분하지 않고 가장 많이 사용된 알파벳이 여러 개인 경우 ?를 출력한다.
대문자와 소문자 구별이 없고 마지막 출력하는 알파벳을 대문자로 출력하기에 toupper 함수를 사용해 입력한 단어를 대문자로 바꾸었다.
그 후 알파벳에 따라 arr 배열의 값을 증가시키고 가장 많은 빈도의 알파벳을 찾았다.
반응형