반응형
문제
입력
첫째 줄에 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