728x90
반응형
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
Python
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
s = input().rstrip()
ans = 0
length = 1
for i in range(s.find('I')+1, m): # I가 처음으로 나오는 곳부터 시작
if length == 0 and s[i] == "I": # 새롭게 수열 계산해야 할 시점인지 판단
length = 1
continue
if s[i] != s[i-1]:
length += 1
else:
if s[i-1] != "I": # IOIO 처럼 O가 붙어서 끝나는 경우 길이-1
length -= 1
if length >= (1+2*n): # Pn보다 짧은 수열이면 패스
ans += (length - (1+2*n))//2 + 1 # 그 차이 중 I개만 선택
length = 1 if s[i] == "I" else 0 # 곧바로 새로운 수열이 시작되는지 확인하기
# IOIOI처럼 단 한 번도 같은 경우 없이 끝나는 상황까지 처리하기
if length >= (1+2*n):
if s[-1] != "I":
length -= 1
ans += (length - (1+2*n))//2 + 1
print(ans)
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준][Python] 20301번 반전 요세푸스 - 원형 큐 (0) | 2021.08.04 |
---|---|
[백준][Python] 11723번 집합 (0) | 2021.08.04 |
[백준][Python] 15828번 Router - 원형 큐 (0) | 2021.08.01 |
[백준][Python] 2751번 수 정렬하기2 - MergeSort (0) | 2021.07.29 |
[백준][Python] 18258번 큐2, 10866번 덱 - 연결 리스트 (0) | 2021.07.29 |