[백준/python]5525번 IOI - string
stack에 I가 등장하면 인덱스를 push하고 stack의 원소의 차이가 2이상이면 답을 늘려가는 방식으로 풀 수 있다. 그러나 문자열 문제이기 때문에 split을 사용하는 방식으로 풀어보았다.
풀이
I를 기준으로 split하여 입력값을 받는다.
입력된 배열을 탐색하며 연속하는 ‘O’의 개수를 계산한다.
‘O’가 아닌 값이 등장하거나 배열의 마지막 인덱스에 도착하면 총 몇 개의 Pn이 만들어지는 지 계산하면 된다.
Pn의 개수는 = 연속하는 ‘O’의 개수 - N + 1 이다. ex)연속하는 O의 개수 6개, N=3 → 총 4개(IoIoIoIoIoIoI)
코드
# IOI
N=int(input())
length = int(input())
string = input().split('I')
sol=0
tmp=0
for i in range(len(string)) :
if string[i] == 'O' and i!=len(string)-1:
tmp+=1
elif i==len(string)-1 or string[i] !='O':
count = tmp-N+1
if count > 0:
sol+=count
tmp=0
print(sol)
댓글남기기