백준 1157
문제 링크
- 알파벳 대소문자를 구분하지 않는다.
- 가장 많이 사용된 알파벳이 여러 개일 경우 "?"를 출력한다.
- 단어의 길이는 1,000,000을 넘지 않는다.
(1 ≤ WORD ≤ 1,000,000)
int len;
char arr[1000000];
int cnt[26] = {0};
int select = 0;
scanf("%s", arr);
len = strlen(arr);
for(int i = 'a'; i <= 'z'; i++)
{
for(int j = 0; j < len; j++)
{
if(i == arr[j])
cnt[i-'a']++;
}
}
for(int i = 'A'; i <= 'Z'; i++)
{
for(int j = 0; j < len; j++)
{
if(i == arr[j])
cnt[i-'A']++;
}
}
int max = cnt[0];
for (int i = 1; i < 26; i++) {
if (max < cnt[i]) {
max = cnt[i];
select = i;
}
}
for (int i = 0; i < 26; i++) {
if (max == cnt[i])
result++;
}
if (result > 1)
printf("?\n");
else
printf("%c", select + 'A');
#include <stdio.h>
#include <string.h>
int main(void) {
int max, result = 0, len;
char arr[1000000];
int cnt[26] = {0};
int select = 0;
scanf("%s", arr);
len = strlen(arr);
for (int i = 'a'; i <= 'z'; i++) {
for (int j = 0; j < len; j++) {
if (i == arr[j])
cnt[i - 'a']++;
}
}
for (int i = 'A'; i <= 'Z'; i++) {
for (int j = 0; j < len; j++) {
if (i == arr[j])
cnt[i - 'A']++;
}
}
max = cnt[0];
for (int i = 1; i < 26; i++) {
if (max < cnt[i]) {
max = cnt[i];
select = i;
}
}
for (int i = 0; i < 26; i++) {
if (max == cnt[i])
result++;
}
if (result > 1)
printf("?\n");
else
printf("%c", select + 'A');
return 0;
}