반응형
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
문제
입력
첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다.
출력
S에 PN이 몇 군데 포함되어 있는지 출력한다.
제한
서브태스크
풀이
# 시간초과로 인해 50점만 맞는 코드
n = int(input())
m = int(input())
s = input()
p = 'IO'*n+'I'
cnt = 0
for i in range(m-len(p)+1):
if s[i:i+len(p)] == p:
cnt += 1
print(cnt)
# 100점 코드
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
s = sys.stdin.readline().rstrip()
start, end = 0, 0
cnt = 0
while end < m:
if s[end:end+3] == "IOI":
end += 2
if end - start == n*2:
cnt += 1
start += 2
else:
start = end = end + 1
print(cnt)
0이 n개만큼 나오므로 IOI의 수를 세면 된다.
시간초과로 인해 sys.stdin.readline()과 rstrip()을 이용하고,
두 포인터를 이용해서 포인터를 이동해가며 카운트를 하면 된다.
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver III #15655 N과 M (6) (0) | 2023.01.30 |
---|---|
[백준/Python] Silver III #15657 N과 M (8) (0) | 2023.01.30 |
[백준/Python] Bronze V #2738 행렬 덧셈 (0) | 2023.01.29 |
[백준/Python] Silver IV #17219 비밀번호 찾기 (0) | 2023.01.28 |
[백준/Python] Silver I #2531 회전 초밥 (0) | 2023.01.28 |
Comment