[백준/C++] 5525번 IOIOI

2021. 2. 25. 02:48알고리즘/구현

728x90
반응형

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

 

5525번: IOIOI

첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000)

www.acmicpc.net

 

 

문제풀이

 

IOI가 연속되는 개수를 세서 N에 도달하면 정답 개수를 1개 카운트한다.

 

ex)

IOIOIOIOIOI

IOIOIOIOIOI

IOIOIOIOIOI

IOIOIOIOIOI

IOIOIOIOIOI

 

위와 같이 계속 IOI가 연속된다면 그 개수를 센다. 

 

코드

#include <iostream>

using namespace std;

int main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int N,M;
    string s;
    cin>>N>>M>>s;

    int num = 0, answer = 0;
    for(int i=0; i<M-2; i++){
        if(s[i] == 'I' && s[i+1] == 'O' && s[i+2] == 'I'){ //IOI가 연속되는지 검사
            num++; //IOI의 개수를 센다.
            if(num == N){ //개수가 N과 같으면
                answer++;
                num--;
            }
            i++;
        }
        else
            num = 0;
    }

    cout<<answer;
    
    return 0;
}

 

 

결과

728x90
반응형

'알고리즘 > 구현' 카테고리의 다른 글

[백준/C++] 18870번 좌표 압축  (0) 2021.02.26
[백준/C++] 11279번 최대 힙  (0) 2021.02.25
[백준/C++] 1780번 종이의 개수  (0) 2021.02.23
[백준/C++] 1541번 잃어버린 괄호  (0) 2021.02.22
[백준/C++] 1260번 DFS와 BFS  (0) 2021.02.21