ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1157 - 단어공부
    백준 algorithm 2020. 3. 29. 12:03
    반응형

    문제 설명

     

     

    => arr :  알파벳을 하나씩 담을수 있는 26 크기의 배열이 필요하다 

    => 각 index를 탐색하며 해당 알파벳이 나올때, 해당하는 arr 의 값을 올려준다. 

    A B C ... Z
    0 1 2 ... 25

    => 위의 배열은 각각의 알파벳을 지칭하고 원소값을 string에 나온 알파벳의 개수를 세어준다. 

     

     

     

     

    => arr을 완성시킨 뒤, index 순서대로 올라가면 최대 크기를 가지고 있는 index 를 찾는다. 

    => 이 경우 최대 크기를 가지고 있는 inde가 다수일  경우를 위해 rep 이라는 bool 변수를 사용했다. 

     

    => 다수일 경우, ?를 출력한다. 

    => 다수가 아닐 경우 해당하는 알파벳을 출력한다. 

     

     

    *** 이 코드는 보기엔 간단하지만, 효율성이 좋지 않다. 다른 사람들의 코드를 보면 0ms도 나온다...
    본인은 8ms가 나온다. 

     

     

    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        
        string s;
        cin >> s;
        
        int length= s.length();
        
        int arr[26];
        fill_n(arr, 26, 0);
        
        for(int i=0; i<length; ++i)
        {
            if(s[i]>=65 && s[i]<=90) // Big Letter
                arr[s[i]-'A']++;
            else if(s[i]>=97 && s[i]<=122) // small Letter
                arr[s[i]-'a']++;
        }
        
        int max=-1;
        int maxIndex=0;
        bool rep=false; // 중복이 없는 경우
        
        for(int i=0; i<26; ++i)
        {
            if(arr[i]>max)
            {
                max=arr[i];
                maxIndex=i;
                rep=false;
            }
            else if(arr[i] == max)
            {
                max=arr[i];
                rep=true;
            }
        }
        
        if(rep)
        {
            cout << "?"<<'\n';
        }
        else
        { char c= maxIndex+'A';
            cout << c<<'\n';
        }
        
    
        return 0;
    }
    
    
    반응형

    '백준 algorithm' 카테고리의 다른 글

    백준 2745 - 진법 변환  (0) 2020.04.01
    백준 11005 - 진법 변환 2  (0) 2020.04.01
    백준 2675 - 문자열 반복  (0) 2020.03.26
    백준 10809 - 알파벳 찾기  (0) 2020.03.26
    백준 1373 - 2진수 8진수  (0) 2020.03.26

    댓글

Designed by Who.