반응형
이 문제 또한 ASCII 코드값을 사용하면 풀 수 있다.
입력되는 문자열의 소문자, 대문자는 구분하지 않고 어떤 알파벳이 몇 번 사용되었는지만 계산하는 문제이기 때문에 26사이즈의 1차원 배열을 생성한다.
문자가 ASCII 코드값을 사용하여 65~90 사이의 값이면 대문자로 취급, 97~122이면 소문자로 취급하여
대문자일 경우에는 문자에 65를 빼주고, 소문자면 97를 빼주어서 어떤 알파벳이 몇 번 사용되었는지만 확인하고, 가장 많이 사용된 문자를 찾는다.
가장 많이 사용된 문자의 등장 횟수가 다른 알파벳의 등장 횟수와 같으면 ?이고 아니면 가장 많이 사용된 문자를 출력해주면 된다.
#include <iostream>
using namespace std;
int main(){
string s;
cin >> s;
int alphabet[26] = {0, };
// ASCII CODE
// 65~90 대문자
// 97~122 소문자
for(int i = 0; i < s.size(); i++){
if(s[i] >= 65 && s[i] <= 90)
alphabet[s[i] - 65]++;
if(s[i] >= 97 && s[i] <= 122)
alphabet[s[i] - 97]++;
}
int max = 0;
int maxIndex = 0;
for(int i = 0; i < 26; i++){
if(alphabet[i] > max){
max = alphabet[i];
maxIndex = i;
}
}
int count = 0;
for(int i = 0; i < 26; i++){
if(alphabet[i] == max)
count++;
}
if(count == 1)
cout << char(maxIndex + 65);
else
cout << "?";
return 0;
}
반응형
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 7568 덩치 (0) | 2021.01.28 |
---|---|
백준 2908 상수 (0) | 2021.01.28 |
백준 2675 문자열 반복 (0) | 2021.01.28 |
백준 10809 알파벳 찾기 (0) | 2021.01.28 |
백준 1065 한수 (0) | 2021.01.27 |