오늘의 알고리즘

[C++] 백준 5545 IOIOI

하늘하늘 . 2022. 9. 14. 23:40
#include <iostream>
#include <string>
 
int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
 
    int N = 0;
    int M = 0;
    std::cin >> N >> M;
 
    std::string s = {};
    std::cin >> s;
 
    int iAns = 0;
 
    for (int i = 0; i < M; ++i)
    {
        int iCount = 0;
 
        if (s[i] == 'O')
            continue;
 
        else
        {
            while (s[i + 1] == 'O' && s[i + 2] == 'I')
            {
                ++iCount;
 
                if (iCount == N)
                {
                    --iCount;
                    ++iAns;
                }
 
                i += 2;
            }
 
            iCount = 0;
        }
    }
 
    std::cout << iAns;
 
    return 0;
}

I가 무조건 시작이어야 합니다. IOIOI순서니까 2개씩 찾아도 됩니다.

--iCount는 찾았으면 다음으로 넘어갔을 때 찾아야 때문입니다.