2941 - 크로아티아 알파벳

2941 문제 링크

접근법

문제에서 크로아티아 알파벳과 변경된 입력방식이 주어지는데 다음과같다.

image

다음을 보면 알 수 있듯이 ‘=’ 문자는 항상 다른 알파벳과 같이쓰이며 ‘z=’는 앞에 d가 붙거나 안붙는 경우가 있다는 것을 알 수 있다. 이점을 이용하면 어떤 문자들이 엮여서 하나의 크로아티아 알파벳을 만드는지 알 수 있고 전체 문자에서 엮이는 것들을 하나씩 빼면 크로아티아 알파벳의 개수를 알 수 있다.

#include <iostream>

using namespace std;

int count = 0;

int main()
{
    string croatia;

    getline(cin, croatia);

    for(int i=0; i<croatia.length(); i++)
    {
        count ++;

        if(croatia[i] == '=' || croatia[i] == '-')
        {
            count--;
            if(croatia[i-1] == 'z')
            {
                if(croatia[i-2] == 'd')
                    count--;
            }

        }


        if(croatia[i] == 'j')
            if(croatia[i-1] == 'l' || croatia[i-1] == 'n')
                count--;
    }

    cout << count;


}

결론

모든 크로아티아 알파벳을 확인하는 것보다는 조금 더 효율적인 방법인것 같다.

업데이트: