728x90
반응형
백준 1157번 문제는 가장 많이 사용한 알파벳을 대소문자 구분 없이 나타내는 것입니다.
먼저 26개의 count 배열을 생성하고 대소문자 구분 없이 알파벳을 카운트합니다.
카운트한 값에서 최댓값을 찾고 이를 다시 반복문을 돌려 2개 이상일 경우 ?를 출력합니다.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int count[26] = { 0, };//알파벳은 총 26개입니다.
int max_index = 0, num = 0;
getline(cin, str);
for (int i = 0; i < str.length();i++) {
int n = str[i];
if (n <= 'Z') {
count[n - 'A']++;
}//대문자일 경우-'A'를 합니다.
else if(n <= 'z') {
count[n - 'a']++;
}//대문자일 경우-'a'를 합니다.
}
for (int i = 1; i < 26; i++) {
max_index = (count[max_index] > count[i]) ? max_index : i;//최댓값 인덱스로 값을 비교하고 더 큰 수가 나오면 그 수를 max_index에 넣어서 다시 비교합니다.
}
for (int i = 0; i < 26; i++) {
if (count[max_index] == count[i]) {
num++;
}//최댓값과 같은 숫자를 찾습니다.
if (num >= 2) {
cout << "?" << endl;
return 0;
}//같은 숫자가 있으면 ?를 출력합니다.
}
cout << (char)(max + 65);//65는 'A'의 아스키 코드입니다.
}
728x90
반응형
'프로그래밍_백준 > C++' 카테고리의 다른 글
(C++) 백준 1085번 직사각형에서 탈출 (0) | 2023.02.26 |
---|---|
(C++) 백준 1546번 평균 [new(), delete()] (0) | 2023.02.22 |
(C++) 백준 8958번 OX퀴즈 (0) | 2023.02.22 |
(C++) 백준 3052번 나머지 문제 (0) | 2023.02.22 |
(C++) 백준 2920번 음계 (0) | 2023.02.21 |