<답안>
#include <iostream>
using namespace std;
int main() {
int count[26] = {0};
int temp, max = 0;
int maxCount = 0;
int index = 0;
//Z : 90
string input;
cin>>input;
for(int i=0; i<input.size(); i++)
{
temp = (int)input.at(i);
//소문자
if(temp > 90)
{
count[temp-97]++;
if(count[temp-97] > max)
max = count[temp-97];
}
//대문자
else
{
count[temp-65]++;
if(count[temp-65] > max)
max = count[temp-65];
}
}
for(int i=0; i<26; i++)
{
if(count[i] == max)
{
maxCount++;
index = i;
}
}
if(maxCount > 1)
cout<<"?";
else
cout<<(char)(index+65);
return 0;
}
<설명>
string 형태의 input을 입력받는다
인덱스 i=0 ~ size()-1까지 증가시키며 int 형변환 값을 temp에 저장한다
소문자 a : 97 ~ z : 122 / 대문자 A : 65 ~ Z : 90 이므로
temp가 90보다 큰 경우 소문자이고, 그외는 대문자이다
소문자 - 97 의 경우 a -> 0, z -> 25로 변환된다
대문자 - 65 의 경우 A -> 0, Z -> 25로 변환된다
변환된 숫자값을 인덱스로 하여 count 배열의 수를 증가시켜 개수를 센다
동시에 max값을 비교하여 count의 최대값을 저장한다
그리고 max값이 동일한 문자가 있는지 판별을 위해
인덱스 i=0부터 25까지 증가시키며 count[i]값이 max와 같은경우
maxCount를 증가시키며 해당문자를 찾기위한 인덱스 i값을 index로 저장한다
만약 maxCount값이 1보다 큰 경우는 두글자 이상이 max값이 같다는 뜻이므로 ?를 출력한다
그 외의 경우(maxCount = 1) index + 65를 통해 문자로 바꾸어 출력한다 (0 -> A)
'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글
백준 2908번 (C++) (0) | 2020.08.22 |
---|---|
백준 1152번 (C++) (0) | 2020.08.22 |
백준 2675번 (C++) (0) | 2020.08.22 |
백준 10809번 (C++) (0) | 2020.08.22 |
백준 11720번 (C++) (0) | 2020.08.22 |