Algorithm/백준
[백준 스위프트] 5525번 IOIOI
devKen
2022. 8. 24. 09:17
아이디어
자꾸 시간 초과가 떠서 당황했었다. 결국 구조 자체를 구글을 참고하여 변경했다.
IOI를 규칙에 맞게 생성하여 비교하면 시간초과가 나는 시스템인듯하다. 이 문제는 일단 IOI를 찾고 발견하게 되면 인덱스를 하나 뒤로 가서 IOI를 다시 확인한다. 해당 반복 과정에서 cnt 변수를 통하여 IOI의 길이 = N을 체크하게 된다. 확인하게 되면 result를 증가시켜 반영한다.
해답
let N = Int(readLine()!)!
let M = Int(readLine()!)!
let S = Array(readLine()!)
var cnt = 0
var i = 0
var result = 0
while i < M - 2 {
if String(S[i...i+2]) == "IOI" {
cnt += 1
i += 2
if cnt == N {
cnt -= 1
result += 1
}
}
else {
i += 1
cnt = 0
}
}
print(result)