📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 5525 IOIOI 문제 풀이

Written by Donghak Park

문제 출처 : 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


문제 해석 : 주어진 문자열에 특정 문자열이 몇번 반복되는지 검사하는 문제이다.

 

문제 풀이 :  단순하게 이중 반복문을 통해서 문제를 풀었을 때 시간 초과가 났다. 따라서 반복문을 한번만 돌면서 이를 충족시켜야한다. 


풀이 코드

import sys
input = sys.stdin.readline

N = int(input().rstrip())
M = int(input().rstrip())
S = input().rstrip()

answer = 0
count = 0
i = 1

while i < M - 1:
    if S[i-1] == "I" and S[i] == "O" and S[i+1] == "I":
        count += 1
        if count == N:
            count -= 1
            answer += 1
        i += 1
    else:
        count = 0
    i += 1

print(answer)

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.