본문 바로가기

Algorithm

백준 5525번 IOIOI

반응형

문제

N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다.

  • P1 IOI
  • P2 IOIOI
  • P3 IOIOIOI
  • PN IOIOI...OI (O가 N개)

I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.

입력

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

출력

S에 PN이 몇 군데 포함되어 있는지 출력한다.

 

 

이전 IOI를 포함하여 다음 IOI를 생성하는 경우를 포함해야 함.

 

#include <iostream>
#include <string>


using namespace std;


int main(void)
{



int N,L;

cin >> N >> L;


int count = 0;
int result = 0;
int middle = 0;
char current;

string str;

cin >> str;
     
 
 //OOIOIOIOIIOII
 
int i = 0;

    while(i < str.size())
{
if(count == N)
{
    count = N-1;
result++;
}


if(str[i+2] != NULL && str[i] == 'I' && str[i+1] == 'O' && str[i+2] == 'I')
{
count++;

i += 2;


}
else{

count = 0;
i++;

}





 
}


cout << result <<endl;
}

반응형