[백준] 1157: 단어 공부

dBoyeob·2022년 4월 18일
0

Problem-Solving

목록 보기
4/10
post-thumbnail

문제

[Bronze_I] 정답 비율 39%

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

생각

  1. 알파벳 개수만큼의 배열을 생성해 값을 0으로 초기화한다.
  2. 문자열을 입력받는다
  3. 반복문을 이용해 한 글자씩 확인하며 해당 알파벳에 해당하는 Array의 값을 1 증가시킨다.
  4. 새로운 반복문을 이용해 가장 큰 수가 무엇인지 확인하고, 출력한다.

배운 점

  • 처음에 for 문 안의 종료조건으로 i<strlen(input을 넣었더니 시간 초과가 나왔다.
    검색을 통해 알게 되었는데, 종료조건에 strlen을 넣으면 for문이 반복될 때마다 strlen 함수를 호출해 길이를 잰다고 한다.
    -> 새로운 int 변수에 strlen의 값을 넣어준 뒤 종료조건에 넣어서 해결하였다.
  • 브론즈 문제에서도 배울 점이 있ㄷr ,,!!! 무시하지 마 !!!

코드

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

int main(){
    int lists[26] = {0};
    int index = 0;
    int max_index = 0;
    char max_value='A';
    char input[1000001];
    scanf("%s", input);

    // printf("%d %d\n", 'a', 'z'); // 97 ~ 122 
    // printf("%d %d", 'A', 'Z'); // 65 ~ 90
    int len = strlen(input);
    for(int i=0; i<len; i++){
        if(input[i]>95)
            index = input[i]-97;
        else
            index = input[i]-65;
        lists[index]++;
    }

    for(int i=1; i<26; i++){
        if(lists[max_index]==lists[i])
            max_value = '?';
        else if(lists[max_index]<lists[i]){
            max_index = i;
            max_value = 'A'+i;
        }
    }

    printf("%c", max_value);
    return 0;
}
``
profile
HGU Computer Science 21 && CRA 21-1 👨🏻‍💻

0개의 댓글