본문 바로가기

Algorithm/String

(C++) - 백준(BOJ) 5525번 : IOIOI 답

반응형

www.acmicpc.net/problem/5525

 

5525번: IOIOI

첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000)

www.acmicpc.net

풀이방법

n이 1인 경우에

IOI는 1

IOIOI는 2 를 답으로 출력해야합니다.

따라서 OI를 한 set으로 계속 2씩 증가하며 이를 하나로 치고 개수를 세줬을때 n과 같으면 answer가 1씩 증가합니다.

 

Code

#include <iostream>
#include <string>
using namespace std;
int n,m,ans=0;
string word;
//IOI 1
//IOIOI 2
//I한번나오면 n개수만큼 OI가 나올 때마다 답  1증가
int main(){
    cin >> n >> m >> word;
    for(int i = 1; i < word.size(); i++){
        int count = 0;
        if(word[i-1]=='I'){
            while(word[i]=='O' && word[i+1]=='I'){
                i+=2;
                count++;
                if(count == n ){ count--; ans++;}
            }
        }
    }
    cout << ans <<'\n';
}