문제
N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다.
- P1 IOI
- P2 IOIOI
- P3 IOIOIOI
- PN IOIOI...OI (O가 N개)
I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.
입출력 예시
입력: 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다.
출력: S에 PN이 몇 군데 포함되어 있는지 출력한다.
제한:
- 1 ≤ N ≤ 1,000,000
- 2N+1 ≤ M ≤ 1,000,000
- S는 I와 O로만 이루어져 있다.
서브테스크:
1 | 50 | N ≤ 100, M ≤ 10 000. |
2 | 50 | 추가적인 제약 조건이 없다. |
입력예시1)
1
13
OOIOIOIOIIOII
출력예시1)
4
- OOIOIOIOIIOII
- OOIOIOIOIIOII
- OOIOIOIOIIOII
- OOIOIOIOIIOII
입력예시2)
2
13
OOIOIOIOIIOII
출력예시2)
2
- OOIOIOIOIIOII
- OOIOIOIOIIOII
코드
N = int(input()) # N입력
M = int(input()) # M입력
S = input() # S입력
cnt = 0 # 정답 변수
i = 0 # while
c = 0 # c
while i < (M - 1): # IOI가 몇 번 연속으로 존재하는지를 체크한다.
if S[i:i + 3] == 'IOI': # IOI라면
i += 2 # 인덱스를 뒤로 두 칸 이동
c += 1 # c를 1 증가 - IOI의 반복 횟수를 나타냄
if c == N: # 만약 c의 값이 N과 같다면
cnt += 1 # 결과값을 1 증가
c -= 1 # c의 값을 1 감소
else: # IOI가 아니면
i += 1 # 그냥 다음 인덱스로 이동
c = 0 # c값 초기화
print(cnt) # 결과값 출력
실행 화면
채점 결과
728x90
'문제 풀이 > [BaekJoon]' 카테고리의 다른 글
[BaekJoon] 16928 뱀과 사다리 게임 (Gold 5) - Python (0) | 2023.01.06 |
---|---|
[BaekJoon] 10026 적록색약 (Gold 5) - Python (2) | 2023.01.05 |
[BaekJoon] 11403 경로 찾기 (Silver 1) - Python (0) | 2023.01.05 |
[BaekJoon] 6064 카잉 달력 (Silver 1) - Python (0) | 2023.01.02 |
[BaekJoon] 1389 케빈 베이컨의 6단계 법칙 (Silver 1) - Python (0) | 2023.01.01 |