알고리즘/Baekjoon
5525번:IOIOI
따아앙이
2024. 11. 24. 11:25
https://www.acmicpc.net/problem/5525
메모리 : 1968KB
시간 : 12ms
코드길이 : 343B
#include <stdio.h>
int main()
{
char str[1000001];
int N, M, val = 0, cnt = 0, ret = 0;
scanf("%d %d %s", &N, &M, &str);
for (int i = 2; i < M; i++)
{
if (str[i - 2] == 'I' && str[i - 1] == 'O' && str[i] == 'I')
{
cnt++;
if (cnt == N) {
ret++;
cnt--;
}
i ++;
}
else {
cnt = 0;
}
}
printf("%d", ret);
}
메모리 : 1968KB
시간 : 12ms
코드길이 : 585B
#include <stdio.h>
int main()
{
int N; int M; char str[1000001];
int val = 0, cnt = 0, ret = 0;
bool isStart = false;
scanf("%d %d %s", &N, &M, &str);
for (int i = 0; i < 2; i++) {
val <<= 1;
if (str[i] == 'I') { val += 1; }
}
for (int i = 2; i < M; i++)
{
val <<= 1;
if (str[i] == 'I') { val += 1; }
if (val >= 8) { val -= 8; }
if (val == 5) {
cnt++;
isStart = true;
if (cnt == N) {
ret++;
cnt--;
}
}
else
{
if (val == 2 && isStart) { continue; }
else {
cnt = 0;
isStart = false;
}
}
}
printf("%d", ret);
}