-
[5525] IOIOIBOJ 2022. 4. 7. 04:18
https://www.acmicpc.net/problem/5525
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이 몇
www.acmicpc.net
선형에 풀기 위해서는 단순히 substr을 비교하는것이 아니라, 현재까지 확인한 IOIOI...문자열의 길이를 저장해야한다.
올바른 괄호를 판별하는 스택문제와 유사하다.
#include <bits/stdc++.h>using namespace std;#ifdef ONLINE_JUDGEconstexpr bool local = false;#elseconstexpr bool local = true;#endifusing ll = long long;using pi = pair<ll, ll>;int n, S, ans, cur;string s;int main(void) {if (!local) ios_base::sync_with_stdio(0), cin.tie(0);cin >> n >> S >> s;int i;for (i = 0; i < S; i++) {if ((cur & 1) && s[i] == 'O')cur++;else if ((~cur & 1) && s[i] == 'I')cur++;elsecur = (s[i] == 'I');if (s[i] == 'I' && cur >= 2 * n + 1) ans++;}cout << ans;return 0;}
'BOJ' 카테고리의 다른 글
[12789] 도키도키 간식드리미 (0) 2022.04.12 [3787] Count on Canton (0) 2022.04.09 [9375] 패션왕 신해빈 (0) 2022.04.07 [18111] 마인크래프트 (0) 2022.04.03 [1302] 베스트셀러 (0) 2022.04.01