728x90
50점짜리 정답)
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
string = sys.stdin.readline().rstrip()
compare = 'IO' * n + 'I'
cnt = 0
for i in range(len(string)):
if string[i:i+len(compare)] == compare:
cnt += 1
print(cnt)
100점 짜리 정답)
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
s = sys.stdin.readline().rstrip()
ans, i, cnt = 0, 0, 0
while i < (m-1): #1
if s[i:i+3] == 'IOI': #2
i += 2 #3
cnt += 1 #4
if cnt == n: #5
ans += 1 #6
cnt -= 1 #7
else: #8
i += 1 #9
cnt = 0 #10
print(ans)
'IO' * n + 'I'
#1 : i = 0이므로 문자열 끝까지 반복 m-1
#2 : 공통적으로 반복하는 문자는 IOI니까 i부터 i+3까지 슬라이싱할때 IOI가 맞아야함
#3 : 인덱스 +2
#4 : IOI 카운트 1추가
#5 : IOI 카운트가 입력값과 같으면(중복가능)
#6, 7 : answer +1, IOI카운트 1개 감소(앞의 IOI는 사라져야 하니까)
#8 : i부터 i+3까지의 슬라이싱이 'IOI'가 안되면
#9 : 인덱스 +1
#10 : 쌓아온 카운트 0 초기화
언제쯤 문자열 기본 유형을 두루두루 알 수 있게 될까?
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 1159 파이썬(python) : 농구 경기 (0) | 2022.07.18 |
---|---|
[백준] 10798 파이썬(python) : 세로읽기 - 사이즈계산 (0) | 2022.07.18 |
[백준] 9935 파이썬(python) : 문자열 폭발 (0) | 2022.07.18 |
[백준] 1439 파이썬(python) : 뒤집기 (0) | 2022.07.18 |
[백준] 11721 파이썬(python) : 열 개씩 끊어 출력하기 (0) | 2022.07.18 |