반응형
문제
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;
}
반응형
'Algorithm' 카테고리의 다른 글
1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2019.12.14 |
---|---|
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2019.12.13 |
삼성SW 1859. 백만 장자 프로젝트 (0) | 2019.11.17 |
백준 2841번 외계인의 기타연주 (0) | 2019.11.14 |
백준 12764번 싸지방에 간 준하 (GG) (0) | 2019.11.12 |