[백준-5525] IOIOI / Python
📚 Problem Solving/Baekjoon
5525번: IOIOI
첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000)
www.acmicpc.net
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
s = sys.stdin.readline()
answer, pattern, i = 0, 0, 1
while i < m - 1:
if s[i - 1] == "I" and s[i] == "O" and s[i + 1] == "I":
pattern += 1
if pattern == n:
answer += 1
pattern -= 1
i += 1
else:
pattern = 0
i += 1
print(answer)
해설
처음 문제를 해결한 코드는 인덱스를 이용해 패턴 문자길이만큼 늘려가며 답을 도출하는 코드였는데 시간초과가 걸렸다.. 위처럼 IOI에 맞는 패턴을 가지면 값을 하나씩 늘려주며 답을 구하는게 시간초과를 피해갈 수 있는 방법이었다😥
'📚 Problem Solving > Baekjoon' 카테고리의 다른 글
[백준-9375] 패션왕 신해빈 / Python (0) | 2021.05.27 |
---|---|
[백준-6064] 카잉 달력 / Python (0) | 2021.05.27 |
[백준-2667] 단지번호붙이기 / Python (0) | 2021.05.26 |
[백준-2630] 색종이 만들기 / Python (0) | 2021.05.26 |
[백준-1992] 쿼드트리 / Python (0) | 2021.05.25 |