#include <iostream>
#include <string>
#include <algorithm> //max
using namespace std;
int main() {
int alpha[26] = { 0, };
string word;
cin >> word;
for (int i = 0; i < word.length(); i++) {
char cur = word.at(i);
if (cur >= 'A' && cur <= 'Z') { //대문자 -> 소문자로
cur += 32;
}
alpha[(int)cur - 97]++;
}
int max_alpha = 0; //제일 많이 사용된 알파벳
for (int i = 0; i < 26; i++) {
max_alpha = max(max_alpha, alpha[i]);
}
int ans_cnt = 0;
char ans;
for (int i = 0; i < 26; i++) { //제일 많이 사용된 알파벳이 여러개인지 확인
if (alpha[i] == max_alpha) {
ans_cnt++;
ans = (char)(i + 65);
}
}
if (ans_cnt != 1)
cout << "?";
else
cout << ans;
return 0;
}
[문제 풀이 생각 과정]
1. 소문자,대문자 구분하지 않기때문에 대문자를 소문자로 바꿔서 생각했다.
2. max_alpha 변수를 만들어서 - 가장 많이 사용된 알파벳 횟수 체크!
3. 가장 많이 사용된 알파벳 횟수(max_alpha 변수)가 alpha[]배열에서 여러개 존재하는 지 확인했다.
만약 여러개 존재한다면 - ? 출력 / 한 개만 존재한다면 - 그 알파벳 출력
알파벳 배열 이용하는 문제가 갑자기 쉽게 느껴진다 헤헤
코딩찌질이를 이렇게 느끼게 해주다니 백준짱.. 실버단계 문제도 얼른 쉽게 느껴지길 ...!
'1d-1c > BOJ' 카테고리의 다른 글
5622_다이얼 (C++) (0) | 2020.08.26 |
---|---|
2908_상수 (C++) (0) | 2020.08.26 |
10809_알파벳 찾기 (C++) (0) | 2020.08.25 |
4673_셀프 넘버 (C++) (0) | 2020.08.24 |
8958_OX퀴즈 (C++) (0) | 2020.08.17 |