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

수박강아지·2025년 2월 12일

BAEKJOON

목록 보기
58/174

문제

https://www.acmicpc.net/problem/5525

풀이

  • PN: IOI가 N번 반복되는 상태
  • 문자열 S 안에 PN 패턴이 몇 번 등장하는지

완전 탐색을 이용해 패턴을 찾고 그 패턴이 몇 번 나오는지 카운트했습니다.

i = 0 # 문자열 s 인덱스
ioi = 0 # IOI가 나타난 횟수
cnt = 0 # PN 패턴 카운트

while i < m-1: # s의 길이만큼 반복
	if s[i:i+3] == "IOI": # IOI가 나타나면
    	ioi += 1 # 나타난 횟수 증가
        if ioi >= n: # 나타난 횟수가 PN 패턴 이상이라면
        	cnt += 1 # 카운트 증가
        i += 2 # IOI의 3번째 I부터 다시 검사 시작
   	else: # 아니라면
   		ioi = 0 # 연속된 ioi의 횟수가 끊기면 0으로 초기화
        i += 1 # 인덱스 증가

코드

import sys
input = sys.stdin.readline

def func():
    i = 0 # s 인덱스
    ioi = 0 # IOI 개수
    cnt = 0 # 패턴 카운트

    while i < m-1:
        if s[i:i+3] == "IOI":
            ioi += 1
            if ioi >= n:
                cnt += 1
            i += 2 # IOI의 3번째 I부터 다시 검사 시작
        else:
            ioi = 0
            i += 1
    
    return cnt

if __name__ == "__main__":
    n = int(input())
    m = int(input())
    s = input().rstrip()
    print(func())

0개의 댓글