관리 메뉴

너와 나의 스토리

[BOJ] 5525번 IOIOI 본문

Algorithm/기타

[BOJ] 5525번 IOIOI

노는게제일좋아! 2020. 4. 7. 19:30
반응형

문제: https://www.acmicpc.net/problem/5525

 

 

문제 풀이:

변수 설명:

io: 현재 위치까지 "IO"가 연속해서 나온 횟수

res: 지금껏 나온 $P_N$의 개수

 

문자열을 처음부터 끝까지 한 번만 보면서 다음 연산을 한다.

  • 직전 문자가 'I'였고, 지금 '0'라면
    • io++;
  • 직전 문자가 '0'였고, 지금 'I'라면
    • 연속된 IO개수가 n보다 크다면 $P_N$을 만족한 것이므로 res++;
  • 둘 다 아니라면, IO 모양이 제대로 형성되지 못했으므로 io=0;

 

 

소스 코드:

더보기
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int n, m,res;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL), cout.tie(NULL);

	cin >> n >> m;
	string s;
	cin >> s;

	int io = 0;

	for (int i = 1; i < m; i++) {
		if (s[i-1]=='I' &&s[i]=='O') {
			io++;
		}
		else if(s[i-1]=='O' && s[i]=='I'){
			if (io >= n) res++;
		}
		else {
			io = 0;
		}
	}

	cout << res<<"\n";
	return 0;
}

반응형
Comments