#include <stdio.h>
#include <string.h>
int main() {
char arr[1000001];
int a[26] = { 0, };
char *p = arr;
int *q = a;
int max = 0, num = 0, n = 0, len = 0;
scanf("%s", arr);
len = strlen(arr);
for (int i = 0; i < len; i++) {
if (p[i] >= 97) {
p[i] = p[i] - 32;
}
q[p[i] - 65]++;
}
max = a[0];
for (int i = 1; i < 26; i++) {
if (max < q[i]) {
max = q[i];
num = i;
}
}
for (int i = 0; i < 26; i++) {
if (max == q[i]) {
n++;
}
}
if (n > 1) {
printf("?");
}
else {
printf("%c ", num + 65);
}
return 0;
}
입력받을 문자열을 배열 arr에 저장할 것이므로 arr 배열을 선언한다.
배열 a를 선언하여 이것은 알파벳 갯수를 저장시켜줄 것이다.
포인터 변수들과 사용할 변수들을 선언한다.
첫 for문을 사용하여 문자열의 길이만큼 반복을 시킬 것이다. 각각의 문자열들이 97을 넘으면 소문자이므로 32를 빼주어 대문자로 저장을 시켜준다. 대문자로 바꾼다음엔 65를 빼서 0~25 숫자로 바꾸어 해당하는 자리에 값을 더해준다.
다음 for문에서는 빈도가 많은 알파벳은 배열 a에서 숫자가 클 것이므로 max 변수를 사용하여 가장 큰 숫자를 구해준다. 그리고 num 값에 몇번째인지를 저장해준다. 그래야 그게 무슨 알파벳인지 구할 수 있다.
알파벳의 빈도수가 중복될 수 있는데 이 경우에는 get이라는 변수에 -1을 넣어서 이 단어가 중복되는지 안되는지 구분해준다.
그 다음 if문에서 get이 -1 값을 가지지 않을 경우 num에 65를 더해서 대문자로 바꾼 후 출력을 시키고 get이 -1의 값을 가질 경우에는 ?를 출력한다.
'Mentoring' 카테고리의 다른 글
[멘토링][c언어]배열 거꾸로 출력하기 (포인터 및 배열 사용) (0) | 2020.06.04 |
---|---|
[멘토링][c언어] 백준 10809번 : 알파벳 찾기 (포인터 사용) (0) | 2020.06.03 |
[멘토링][c언어]백준 2562번 : 최댓값 (포인터 사용) (0) | 2020.06.01 |
[멘토링][c언어]알파벳 개수 문제 (0) | 2020.05.29 |
[멘토링][c언어]백준 1152번 : 단어의 개수 (0) | 2020.05.28 |