반응형
문제
https://www.acmicpc.net/problem/5525
풀이
I의 위치를 배열 stack에 저장하고 stack[n+1]과 stack[n] 의 차이가 2라면 IOI 임을 판단하는 방법으로 문제를 해결했다.
import sys
input = sys.stdin.readline
N = int(input())
M = int(input())
S = list(input().rstrip())
cnt = 0
answer = 0
stack = []
for i in range(M):
if S[i] == "O":
continue
else:
stack.append(i) # I의 위치 인덱스 저장
#print(stack)
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)
N = 1
M = 13
S = OOIOIOIOIIOII
stack에 I의 위치 인덱스를 저장 ex) stack = [2, 4, 6, 8, 9, 11, 12]
stack의 길이만큼 for문을 돌면서 차이가 2인지 확인한다.
2라면 IOI로 판단하고 cnt를 1 올려주고, 2가 아니라면 IOI가 아니기 때문에 0으로 다시 초기화시켜준다.
매 for문마다 cnt와 N을 비교해서 N에서 요구하는 IOI의 길이를 만족한다면 answer에 +1을 해준다.
반응형
'Python 코딩테스트' 카테고리의 다른 글
[백준] 2178 미로 탐색 파이썬 (0) | 2022.09.28 |
---|---|
[백준] 2606 바이러스 파이썬 DFS/BFS (0) | 2022.09.27 |
[백준] 2798 블랙잭 파이썬 (0) | 2022.09.19 |
[프로그래머스] 프린터 (1) | 2022.09.13 |
[프로그래머스] 더 맵게 (0) | 2022.09.09 |