Algorithm/Baekjoon
[Swift] 백준 5525번: IOIOI
내일은개발천재🎵
2022. 4. 21. 17:01
문제 사이트
5525번: IOIOI
N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇
www.acmicpc.net
나의 코드
let n = Int(readLine()!)!
let m = Int(readLine()!)!
let s = readLine()!.map{ $0 } // Charactor Array로 바꾸기 -> Index 접근을 위해
var count = 0
var i = 0
var result = 0
while i < m-2 {
if String(s[i...i+2]) == "IOI"{
count += 1
i += 2 // OI가 아닌 IOI를 확인 따라서 2개만 이동
if count == n{ // IOIOI가 나왔다면 (IOI가 n번 나왔냐?)
count -= 1 // 다음 IOI가 나오는지 확인하기 위해
result += 1
}
} else {
i += 1
count = 0
}
}
print(result)
참고 사이트
[백준] 5525번 IOIOI
https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만..
black-hair.tistory.com
KeyPoint
📍 Charactor 형 배열로 입력받기
- Swift는 String형을 Index로 접근할 수 없다.
📍시간복잡도 계산하기.
- n = 2일 때 IOIOI가 몇번 나오는지 확인하는 방법으로 코드를 짰더니 50점이 나왔다..
반드시 계산식을 이용해서 구하자!