cmod.ify

[5525] IOIOI 본문

BASIC/코딩테스트

[5525] IOIOI

modifyC 2026. 1. 6. 14:02
728x90
반응형

처음에 슬라이딩 윈도우인지 모르고 그냥 열심히 구현해봤음

근데 cnt를 0으로 초기화하는 바람에 겹치는 구간을 파악 못함

결국 제미나이의 도움을 받았다.

 

예시 (N=2)

문자열: I O I O I O I

  1. [I O I] O I O I -> count = 1
  2. I O [I O I] O I -> count = 2 (정답!, answer += 1)
  3. 여기서 중요! count를 0으로 리셋하지 않고 1로 줄입니다. (앞의 IOI 하나를 창문 밖으로 밀어냄)
  4. I O I O [I O I] -> 다시 count = 2 (정답!, answer += 1)

IOI라는 한 슬라이딩을 잡고 한칸씩 밀면서 개수를 세나가야 한다.

 

import sys

input = sys.stdin.readline

n = int(input())
m = int(input())
ioio = input().strip()

answer = 0
cnt = 0
idx = 1

while idx < m - 1 :
    # 슬라이딩 찾았을 때
    if ioio[idx-1] == 'I' and ioio[idx]=='O' and ioio[idx+1]=='I':
        cnt += 1
        # 목적 개수를 찾았을 때
        if cnt == n:
            answer += 1
            # 다음칸으로 이동(갯수 하나 감소)
            cnt -=1
        # 한 슬라이딩 칸만큼 이동
        idx += 2
    # 슬라이딩 없어졌을 때 초기화 및 한 칸 이동
    else:
        cnt = 0
        idx += 1
       
print(answer)
728x90
반응형

'BASIC > 코딩테스트' 카테고리의 다른 글

[11403] 경로 찾기 - 플로이드-워셜  (0) 2026.01.07
[11286] 절댓값 힙  (0) 2026.01.06
[2667] 단지번호붙이기  (1) 2026.01.06
[2178] 미로 탐색  (0) 2026.01.05
[1389] 케빈 베이컨의 6단계 법칙  (0) 2025.12.31