C, C++
1157) 7. 문자열 : 단어 공부
Bacha
2019. 8. 14. 00:27
문제
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
풀이
이번 문제도 이전 문제들처럼 아스키코드를 활용하는 문제였다. 이번 파트 문제를 다 풀 때쯤엔 아스키코드표 채로 머릿속에 저장될 듯!
#include "cstdio"
#include "ctype.h"
int maxAlp(int* arr) {
int max(0);
for(int i(1); i < 27; i++) {
if(arr[i] > max) {
max = arr[i];
arr[0] = i + 64; // 최대빈도의 문자를 대문자로 변환
}
else if(arr[i] == max) arr[0] = 63; // 값이 같으면 물음표
}
return arr[0];
}
int main() {
int alp[27]{}; // alp[0] 에다 최다빈도의 문자값을 넣으려고 한칸 추가함
char str('\0');
while(str != '\n') {
scanf("%c", &str);
alp[tolower(str) - 96]++; // 대문자 걸리면 소문자로 변환하고 배열사이즈에 맞게 매핑해 저장
}
printf("%c\n", maxAlp(alp));
return 0;
}