🔒 문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
⌨ 입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
🖨 출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
📚 예제
Ex1)
Mississipi
?
Ex2)
zZa
Z
Ex3)
z
Z
Ex4)
baaa
A
Ex5)
aabbccc
C
위의 예를 생각 못해서 2번이나 틀렸다,,
🔑 c언어 코드
#include
int main()
{
char* string; //문자열 저장
string = malloc(sizeof(char) * 1000000); // 메모리 낭비하기 싫어서 동적 할당
scanf("%s", string);
int n[26] = { 0, }; // 알파벳 A~Z까지 사용 빈도 표시
int max = 0; // 문자 최대 사용 빈도 수
int index; // 최대 사용 문자의 인덱스 저장
int i = 0;
int t = 0; // 같은 빈도인 수 검사
while (string[i] != '\0')
{
int k = (int)string[i];
if (k >= 97)
k -= 97;
else
k -= 65;
n[k]++;
if (max < n[k]) // 최대 빈도 수 구하기
max = n[k];
i++;
}
for (i = 0; i < 26; i++) // 같은 빈도인 문자 검사!
if (max == n[i])
{
t++;
index = i;
}
if (t > 1)
printf("?");
else
printf("%c", index + 65);
return 0;
}
'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ] 2908번 : 상수 (0) | 2022.08.04 |
---|---|
[BOJ] 1152번 : 단어의 개수 (0) | 2022.08.03 |
[BOJ] 2675번 : 문자열 반복 (0) | 2022.08.02 |
[BOJ] 10809번 : 알파벳 찾기 (0) | 2022.08.02 |
[BOJ] 11720번 : 숫자의 합 (0) | 2022.08.02 |