ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 2941 - 크로아티아 알파벳
    카테고리 없음 2020. 6. 17. 16:36

    문제 설명
    입출력

     

     

     

     

     

     

    => 문자열을 다룰 줄 아는지 물어보는 문제입니다. 

    => string 헤더를 제대로 이해하고 내장되어있는 함수들을 통해 풀 수 있습니다. 

    => 저는 처음에 if문으로 구현할 수 있을 줄 알았는데, 해당 방식으로 하면 참조하지 말아야 할 위치를 참조하는 등의 잘못이 생깁니다. 

     

    => string의 find() 함수와 replace 함수를 적절히 사용하여야 합니다. 

     

    • 크로아티아 알파벳을 담을 배열을 생성하고 초기화한다.

    • 해당 크로아티아알파벳을 찾을 경우 해당 구간을 *로 바꿔준다 

    • 위의 과정은 같은 단어가 여러 번 들어가 있을 경우를 위해 다시 검색되지 않도록 하기 위해서 하는 과정이다. 

    • 해당 과정을 진행하며, 크로아티아 알파벳의 개수와 해당 알파벳의 길이를 점진적으로 구한다. 

    • 문자열의 길이 - 크로아티아 알파벳의 길이의 총합

    • 위의 과정을 통해 일반 알파벳의 갯수를 구한다

    • 일반 알파벳의 갯수개수 + 크로아티아 알파벳 개수의 총합을 출력한다. 

     

     

     

     

     

     

    <code>

    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <vector>
    
    
    using namespace std;
    
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
      
        string arr[8]={"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
        
        string word;
        cin >> word;
        int wordsize = word.size();
        int croa=0;
        int croaCnt=0;
        for(int i=0; i<8; i++)
        {
            while(word.find(arr[i]) != string::npos)
            {
                croa +=arr[i].size();
                croaCnt++;
                word.replace(word.find(arr[i]), arr[i].size(), "*");
            }
        }
        int Alpha = wordsize - croa;
        
        cout << Alpha+croaCnt<<'\n';
        
        
        return 0;
    }
    

     

    실행 화면1

     

    실행 화면2

     

     

    댓글

Designed by Who.