반응형
문제 설명
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이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.
풀이 과정
문자열 S를 for문을 돌면서 i를 만날 경우 현재 인덱스를 stack에 넣어준다.
(예를 들어, ooioi일 경우 스택에 2, 4가 들어있을 것이다.)
stack의 각 원소들의 차이가 2인 경우는 i가 한 칸을 띄어져있다는 뜻이므로
이런 경우에 cnt를 하나씩 늘려준다.
이 때, cnt가 n이상일 경우 answer을 하나씩 추가해준다.
import sys
n = int(input())
m = int(input())
s = sys.stdin.readline()
cnt = 0
answer = 0
stack=[]
for i in range(m):
if s[i] == "O":
continue
else:
stack.append(i)
for i in range(1, len(stack)):
if stack[i] - stack[i-1] == 2:
cnt += 1
else:
cnt = 0
if cnt >= n:
answer += 1
print(answer)
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > Implementation' 카테고리의 다른 글
[백준] 9375 패션왕 신해빈 (Python 파이썬) (1) | 2021.04.27 |
---|---|
[백준] 1747 소수&팰린드롬 (Python 파이썬) (0) | 2021.04.27 |
[프로그래머스] 불량 사용자 ( Python 파이썬 ) (0) | 2021.04.22 |
[백준] 2869번 달팽이는 올라가고 싶다 (Python 파이썬) (0) | 2021.04.12 |
[백준] 1193 분수찾기 (Python 파이썬) (0) | 2021.04.12 |