문자열을 이용한 문제이다. 반복문을 돌면서 I 인 경우 while
을 실행한다. while
문을 돌면서 s[i + 1] == 'O'
, s[i + 2] == 'I'
가 만족할 경우 카운트를 해주고 이를 반복한다. 어렵지 않게 풀 수 있었다.
#include <iostream>
using namespace std;
int N, M;
string s;
void solution() {
int result = 0;
for (int i = 0; i < M; i++) {
int o = 0;
if (s[i] == 'I') {
while (s[i + 1] == 'O' && s[i + 2] == 'I') {
o++;
i += 2;
if (o == N) {
result++;
o--;
}
}
o = 0;
}
}
cout << result;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
cin >> M;
cin >> s;
solution();
return 0;
}