문제
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이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000)
출력
S에 PN이 몇 군데 포함되어 있는지 출력한다.
예제 입력 1
1
13
OOIOIOIOIIOII
예제 출력 1
4
풀이
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)
반응형
'Algorithm > Online judge' 카테고리의 다른 글
[백준] 11723번 > 집합 (0) | 2021.02.24 |
---|---|
[백준] 9461번 > 파도반 수열 (0) | 2021.02.24 |
[백준] 10974번 > 모든 순열 (0) | 2021.02.24 |
[백준] 1182번 > 부분수열의 합 (0) | 2021.02.24 |
[백준] 11722번 > 가장 긴 감소하는 부분 수열 (0) | 2021.02.22 |