백준 1157번 : 단어 공부 [C]
주소 : https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
char str[1000001];
int alp[26];
int main() {
int max = 0;
int size;
char ans;
scanf("%s", str);
size = strlen(str);
for (int i = 0;i < size;i++)
if (str[i] >= 'a') alp[str[i] - 'a']++;
else alp[str[i] - 'A']++;
for (int i = 0;i < 26;i++)
if (alp[i] == max) {
ans = '?';
}
else if (alp[i] > max) {
max = alp[i];
ans = 'A' + i;
}
printf("%c", ans);
return 0;
}
마무리 : 이 문제는 알파벳이 대소문자와 상관없이 많이 쓰여진 알파벳을 출력하는 문제로 아스키코드를 이용해서 푸는 문제이다. 그래서 알파벳의 개수가 26개 이므로 배열을 이용하여 알파벳이 나올 때마다 알파벳 순서에 맞게 배열 위치에 플러스를 하여 나중에 비교를 하여 출력하는 것이다. 아스키코드를 생각하지 못한다면 어려운 문제가 될 것이다.