티스토리 뷰

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점이 나왔다..
      반드시 계산식을 이용해서 구하자!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함