문제 링크
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
풀이
- 문자열의 index를 1씩 증가시켜가며 "IOI" 패턴이 몇 번 반복되는지 확인한다.
- "IOI" 패턴이 나오면 index를 2 증가시켜 "IOI" 패턴이 몇 번 반복되는지 확인한다. cnt는 반복되는 횟수를 저장한다.
- n번 반복된다면 answer + 1, "IOI" 패턴이 겹치는 경우도 있으므로 cnt - 1
- "IOI" 패턴이 n만큼 반복되지 않으면 cnt 0으로 초기화하고 다음 인덱스부터 다시 탐색한다.
n = int(input())
m = int(input())
s = input()
# 인덱스
i = 0
# IOI가 반복되는 횟수 저장
cnt = 0
# IOI가 n만큼 반복되는 구간 개수
answer = 0
while i < m-1:
if s[i-1] == 'I' and s[i] == 'O' and s[i+1] == "I":
# IOI가 반복되는 횟수 증가
cnt += 1
# IOI가 n만큼 반복되면
if cnt == n:
answer += 1
cnt -= 1
# 인덱스 2 증가시키기
i += 1
else:
# IOI가 반복되는 횟수 초기화
cnt = 0
i += 1
print(answer)
'개발 > algorithm' 카테고리의 다른 글
[백준 1389번] 케빈 베이컨의 6단계 법칙 - python (0) | 2022.02.17 |
---|---|
[백준 11403번] 경로 찾기 -python (0) | 2022.02.17 |
[백준 11286] 절댓값 힙 - python (0) | 2022.02.16 |
[백준 2178번] 미로 탐색 - python (0) | 2022.02.16 |
[백준 1992번] 쿼드트리 -python (0) | 2022.02.16 |