반응형
반응형
#include <iostream>
#include <string>
using namespace std;
//아스키코드 : 대문자 65~90, 소문자 97~122
int alpha[26], cnt = 0;
string input;
int main() {
cin >> input;
for (int i = 0; i < input.length(); i++) {
input[i] = toupper(input[i]); // 모두 대문자로 변경
alpha[input[i] - 65]++; // 65를 빼서 인덱스 위치 구해서 저장 후 증감
}
int max = 0, max_indx = 0;
for (int i = 0; i < 26; i++) { // 가장 많이 사용된 단어에 빈도수를 저장
if (max < alpha[i]) {
max = alpha[i];
max_indx = i;
}
}
for (int i = 0; i < 26; i++) {
if (max == alpha[i]) cnt++; // 가장 많이 나온 단어가 몇 게 인지 췤
}
if (cnt > 1) cout << "?";
else cout << (char)(max_indx + 65);
}
이 문제는 이중 for문을 사용하면 시간 초과가 일어날 수 있다는 점을 생각해서 풀어야 한다.
입력된 문자들을 모두 대문자로 변경 후, 아스키 코드를 이용해서 alpha 배열에 저장 한다.
대문자가 65부터 시작하니까 모든 문자에서 65만큼 빼면 0 ~ 26 까지 크기에 인덱스에 저장이 된다.
그리고 후위증감연산자를 통해 빈도수 췤
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준] 5622 - 다이얼 (0) | 2022.12.28 |
---|---|
2908 - 상수 (2) | 2022.12.28 |
2675-문자열 반복 (0) | 2022.12.25 |
10809-알파벳 찾기 (2) | 2022.12.24 |
11720 - 숫자의 합 (0) | 2022.12.24 |