해바

1157) 7. 문자열 : 단어 공부 본문

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;
}
Comments