[백준] 5525: IOIOI (python)
👉 5525 IOIOI
✍ 내 코드
# 실버 2레벨 IOIOI
from sys import stdin
def check(s, e):
flag = -1 # -1 이상무 0,1,2... 이상
for i in range(0, e - s + 1):
if i % 2 == 0 and S[sdx + i] != "I":
flag = i
break
elif i % 2 == 1 and S[sdx + i] != "O":
flag = i
break
return flag
read = stdin.readline
N = int(read())
M = int(read())
S = read()
sdx = result = 0
while sdx + 2 * N < M:
c = check(sdx, sdx + 2 * N)
if c == -1: # 조건 해당
result += 1
sdx = sdx + 2 * N
while sdx + 2 < M and check(sdx, sdx + 2) == -1:
result += 1
sdx += 2
else:
sdx += c if c != 0 else 1 # 실패한 인덱스로 이동
print(result)
✍ 팁
- 시간 단축을 위해 이미 확인한 부분에 대해서 건너뛰는 작업을 생각해야 한다.
- 인터넷에 내 코드보다 훌륭한 코드들이 있지만 모두 같은 로직이고 나와 같은 코드가 없기에 그대로 올려본다 >ㅡ<
Author And Source
이 문제에 관하여([백준] 5525: IOIOI (python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@coding_egg/백준-5525-IOIOI-python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)