[백준/파이썬] 5525번 IOIOI 풀이

업데이트:



문제 정보


풀이

문제

문자열 안에서 패턴 I(OI)^N이 등장하는 횟수를 세는 문제입니다.

코드

n,m,s=int(input()),int(input()),input()
c,f,l='I',False,[]
i=r=0
while i<m:
    if s[i]==c:
        if f:l[-1][-1]+=1
        else:
            l.append([i,i+1])
            f=True
        c='O'if c=='I' else'I'
    else:
        if f:
            if s[i-1]=='O':l[-1][-1]-=1
            else:i-=1
            c='I'
            f=False
    i+=1
for i in l:r+=max((i[1]-i[0]+1-n*2)//2,0)
print(r)

설명

연속된 IOI 구간 길이를 추적하고, 각 구간에서 만들 수 있는 PN 패턴 개수를 합산해 정답을 구합니다.



댓글남기기