본문 바로가기
C/Baekjoon

[BOJ] 1주차 - #1157

by 단월໒꒱ 2022. 1. 2.

#1157

 

[문제]

 

 


[코드]

 

#include <stdio.h>

int main() {
    char word[1000000];
    int cnt[27] = {0, };
    int max = 0;
    int index = 0;
    
    scanf("%s", word);
    
    for (int i = 0; word[i] != '\0'; i++) {
        if (word[i] >= 'a' && word[i] <= 'z') word[i] -= 32;
        cnt[word[i] - 'A']++;
    }
    
    for (int i = 0; i < 26; i++) {
        if (max < cnt[i]) {
            max = cnt[i];
            index = i;
        }
        else if (max == cnt[i])
            index = -1;
    }
    
    if (index != -1) printf("%c\n", index + 'A');
    else printf("?\n");
    
    return 0;
}

 

 

[설명]

 

입력받을 문자열 word, 각 알파벳 별로 카운트 세는 cnt를 선언하고 cnt와 값 비교를 위한 max값과 index값을 0으로 설정해준다.

반복문으로 입력받은 word 문자열을 처음부터 끝까지 훑으면서 소문자로 입력된 값을 대문자로 변환하여 해당하는 대문자의 cnt 값에 +1을 해준다.

다시 반복문을 사용하여 0으로 설정한 max을 이용해서 위에서 처리한 cnt값들과 하나씩 비교를 하며 제일 큰 max값을 가진 index를 구한다.

여기서, max 값과 cnt 값이 같은 경우에는 index를 -1로 설정해준다.

마지막으로 index값이 -1이 아닌 경우에는 구한 index에 A에 해당하는 아스키값을 더해서 원하는 문자를 출력하도록 하고 -1인 경우에는 ?를 출력하도록 한다.

 

 

 

'C > Baekjoon' 카테고리의 다른 글

[BOJ] SISS 겨울방학 스터디 - 4주차  (0) 2022.01.22
[BOJ] SISS 겨울방학 스터디 - 3주차  (0) 2022.01.14
[BOJ] SISS 겨울방학 스터디 - 2주차  (0) 2022.01.08
[BOJ] 1주차 - #1330  (0) 2022.01.02
[BOJ] 1주차 - #1152  (0) 2022.01.02

댓글