티스토리 뷰

문제. 

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

입출력.

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

#include <stdio.h>
#include <string.h>

int main(void){
    //문제1157 / 2021.02.25 

    char str[1000000];              //주어지는 단어의 길이는 1,000,000을 넘지 않는다.
    int arr[26] = { 0, };           //알파벳의 개수를 확인하기위한 배열 (0=a, 1=b, ... 25=z) 
    
    scanf("%s",str);        
    unsigned int size = strlen(str);

    for(int i=0; i<size; i++){
        if(str[i]<96){          //대문자
            arr[str[i]-65]++;
        }else if(str[i]>96){    //소문자
            arr[str[i]-97]++;
        }
    }

    int max=0;    //알파벳 개수의 최대값 구하기
    char c;       //가장 많은 알파벳 저장하기위한 변수

    //가장 많이 사용된 알파벳 찾기위한 반복문
    for(int i=0; i<26; i++){
        if(arr[i]!=0 && max<arr[i]){
            max=arr[i];
            c = i+65;
        }
    }

    //max와 같은 개수로 사용된 알파벳이 있다면 c에 ? 저장
    for(int i=0; i<26; i++){
        if(arr[i]!=0 && max==arr[i] && i!=c-65){
            c = '?';
            break;
        }
    }

    //결과 출력
    printf("%c\n", c);
    return 0;
}

 

Insight.

어제에 이어 오늘도 C언어 스터디 진도에 맞는 문제를 찾아서 풀어보았는데, 복습도 되고 좋은 것 같다.

그리고 JAVA보다 C언어로 풀었을 때, 방법 자체는 유사한데 실행 시간 차이가 엄청나서 신기했다.

그리고 자정 전에 커밋하려고 노력하고 있는데 잘 지켜지는 것 같아서 뿌듯하다 ✨✨

 

 

 

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

댓글
«   2024/12   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday