티스토리 뷰

1. 문제

https://www.acmicpc.net/problem/1157

 

2. 풀이

#include <stdio.h>

int main(void) {
    char str[1000000];
    int count[26] = { 0, }; // 알파벳 회수가 저장될 배열
    char result = '?'; // 가장 많이 사용된 알파벳
    int maxCount = 0; // 가장 많이 사용된 알파벳의 등장 횟수
    int flag = 0; // 가장 많이 사용된 알파벳이 여러 개 존재하는 지

    scanf("%s", str);

    // 알파벳 빈도 계산
    for(int i = 0; str[i] != '\0'; i++){
        int index = (str[i] >= 'a') ? str[i] - 'a' : str[i] - 'A';
        count[index]++;
    }

    // 최대 빈도와 중복 여부 확인
    for(int i = 0; i < 26; i++){
        if (count[i] > maxCount) {
            maxCount = count[i];
            result = i + 65;
            flag = 1; // 가장 중요한 부분
        } else if (count[i] == maxCount) {
            flag++;
        }
    }

    printf("%c", (flag > 1) ? '?' : result);

    return 0;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함