728x90
[파이썬] 백준 5525 : IOIOI
실버 2
문자열
접근
n이 1 : IOI
n이 2 : IOIOI
n이 3 : IOIOIOI
먼저 반복문을 돌리면서 I가 위치한 인덱스 값을 새로운 리스트에 append한다.
리스트의 i번째 값과 i-1번째 값의 차가 2라면 IOI와 같은 경우이므로 카운터 변수를 하나 증가시키는 방법으로 IOI를 탐색할 수 있다. 만약 차가 2가 아니면 카운터 변수를 0으로 초기화한다.
만약 n이 2인 경우, 찾아내야할 값은 IOIOI이므로 위와 같은 방법이라면 카운터 변수가 2가 되어야 필요한 값을 탐색할 수 있을 것이다.
IOIOI에서 I의 인덱스 값을 새로운 리스트에 넣으면 [0, 2, 4]가 되고,
위와 같은 방법을 적용하면 카운터 변수는 2가 되므로, n과 같은 값이기 때문에 IOIOI를 탐색한 것과 같다.
중요한 것은 카운터 변수 >= n 인 경우에 정답으로 출력할 값이 하나씩 증가한다는 점이다.
코드
import sys; input = sys.stdin.readline
N = int(input())
M = int(input())
S = input().rstrip()
lst = []
cnt, ans = 0, 0
for i in range(len(S)):
if S[i] == 'I':
lst.append(i);
else:
continue
for i in range(1, len(lst)):
if lst[i] - lst[i-1] == 2:
cnt += 1
else:
cnt = 0
if cnt >= N:
ans += 1
print(ans)
728x90
'알고리즘 문제 풀이' 카테고리의 다른 글
[파이썬] 백준 4963 : 섬의 개수 (0) | 2022.04.09 |
---|---|
[파이썬] 백준 11724 : 연결 요소의 개수 (0) | 2022.04.06 |
[파이썬] 백준 18870 : 좌표 압축 (0) | 2022.04.03 |
[파이썬] 백준 1780 : 종이의 개수 (0) | 2022.04.03 |
[파이썬] 백준 9020 : 골드바흐의 추측 (0) | 2022.04.01 |