cmod.ify
[5525] IOIOI 본문
728x90
반응형
처음에 슬라이딩 윈도우인지 모르고 그냥 열심히 구현해봤음
근데 cnt를 0으로 초기화하는 바람에 겹치는 구간을 파악 못함
결국 제미나이의 도움을 받았다.
예시 (N=2)
문자열: I O I O I O I
- [I O I] O I O I -> count = 1
- I O [I O I] O I -> count = 2 (정답!, answer += 1)
- 여기서 중요! count를 0으로 리셋하지 않고 1로 줄입니다. (앞의 IOI 하나를 창문 밖으로 밀어냄)
- 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 |