문제설명
소스코드
#include<iostream>
using namespace std;
int main()
{
int arr[26] = { 0 }; int max = 0; int count = 0; int idx = 0;
string input;
cin >> input;
for (int i = 0; i < input.length(); ++i)
{
input[i] = toupper(input[i]); //모두 대문자로 변환
++arr[input[i] - 65]; //A-65는 0이고, Z-65는 25다
}
for (int i = 0; i < 26; ++i) if (arr[i] > max){ max = arr[i]; idx = i; } //가장 많이 사용된 알파벳 검사
for (int i = 0; i < 26; ++i) if (max == arr[i]) ++count; //가장 많이 사용된 알파벳이 몇개인지 검사
idx += 65; //idx + 65는 가장 많이 사용한 문자이다.
if (count > 1) //가장 많이 사용된 알파벳이 2개 이상이면 ? 출력
{
cout << "?";
return 0;
}
else cout << (char)idx;
}
풀이
- 입력받은 문자열을 모두 대문자로 바꾼다.
- 알파벳은 26개이므로 배열 26개를 선언한다.
- 문자열을 검사하면서 해당하는 문자열의 배열의 값을 증가시킨다.
- max와 idx에 가장 많이 사용된 배열의 값과 해당 인덱스를 저장한다.
- 가장 많이 사용된 배열의 값이 2개 이상이면 ?를 출력한다.
toupper()함수는 알파벳을 대문자로 바꿔주는 함수이다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 6단계 - 2941번 문제 (크로아티아 알파벳) (0) | 2023.04.15 |
---|---|
[C++] 백준 - 10039번 문제 (평균 점수) (0) | 2023.04.15 |
[C++] 백준 6단계 - 10988번 문제 (팰린드롬인지 확인하기) (0) | 2023.04.11 |
[C++] 백준 - 5524번 문제 (입실 관리) (0) | 2023.04.10 |
[C++] 백준 - 5532번 문제 (방학 숙제) (0) | 2023.04.09 |