https://www.acmicpc.net/problem/1157
제출 코드
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word;
cin >> word;
int count[26] = {};
int max;
bool e = false;
for (int i = 0; i < word.length(); i++)
{
char target = (word[i] < 91) ? word[i] : word[i] - 32;
count[target - 'A']++;
}
max = 0;
for (int i = 1; i < 26; i++)
{
if (count[i] > count[max])
{
max = i;
e = false;
}
else if (count[i] == count[max])
{
e = true;
}
}
if (e) cout << '?' << endl;
else cout << char(max + 'A') << endl;
}
아스키 코드표를 참고해서 91 미만(대문자)이라면 그대로 두고, 소문자라면 대소문자 차이인 32를 빼서 저장시켰다
max인 문자 찾는 것과 ? 출력하는 부분은 복호화 문제(https://hye3193.tistory.com/161)와 동일하게 해결했다
i번째 count가 기존 max를 초과하면 max 인덱스를 변경해주고, e도 false로 초기화해준다
만약 i번째 count가 기존 max와 동일하면 max가 두 개 존재한다는 것이므로 e를 true로 설정해준다
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++] 입출력 속도 줄이기(시간초과 해결법) (1) | 2025.01.01 |
---|---|
[C++][백준 4659] 비밀번호 발음하기 (0) | 2024.12.31 |
[C++][백준 10798] 세로읽기 (0) | 2024.12.31 |
[C++][백준 9046] 복호화 (0) | 2024.12.31 |
[C++][백준 11720] 숫자의 합 (0) | 2024.12.31 |