수많은 시도끝에 다른 수업에서 힌트를 얻어서 통과ㅠㅠ
제가 푼 문제 흐름은
1. 단어를 word 배열에 저장
2. 모두 대문자로 변경 (대소문자 구분하지 않기 때문에)
3. flag(알파벳배열)을 생성하여 word의 ASCII 코드에 해당하는 위치에 +1씩
4. 최대값 index 찾기
5. 만약 최대값이 중복이라면 "?" 출력
6. 아니라면 최대값 출력
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#pragma warning (disable:4996)
#define MAX 1000000
void sort(char* str);
int main() {
char word[MAX];
int max, index;
scanf("%s", word);
int n = strlen(word);
for (int i = 0; i < n; i++) {
word[i] = toupper(word[i]);
}
int flag[26] = { 0 }; //배열 초기화
for (int i = 0; i < n; i++) {
flag[word[i] - 'A'] += 1; //ASCII코드 값
}
index = 0;
for (int i = 0; i < 26; i++) {
if (flag[i] > flag[index]) {
index = i;
}
}
for (int i = 0; i < 26; i++) {
if (i != index && flag[i] == flag[index]) {
printf("?");
return 0;
}
}
printf("%c", index+'A');
}
'코딩 > C\C++' 카테고리의 다른 글
[Programming] 쉽게 풀어쓴 C언어 Express 8장 풀이 (0) | 2022.12.10 |
---|