diff --git a/giljihun/README.md b/giljihun/README.md index 6f75c5a..ea84f99 100644 --- a/giljihun/README.md +++ b/giljihun/README.md @@ -4,4 +4,5 @@ |:----:|:---------:|:----:|:-----:|:----:| | 1차시 | 2025.03.30 | DP | [1로 만들기](https://www.acmicpc.net/problem/1463)|https://github.com/AlgoLeadMe/AlgoLeadMe-14/pull/4| | 2차시 | 2025.04.08 | DP | [동전 1](https://www.acmicpc.net/problem/2293)|https://github.com/AlgoLeadMe/AlgoLeadMe-14/pull/8| +| 3차시 | 2025.04.30 | 문자열 | [IOIOI](https://www.acmicpc.net/problem/5525)|https://github.com/AlgoLeadMe/AlgoLeadMe-14/pull/15| --- diff --git "a/giljihun/\353\254\270\354\236\220\354\227\264/[BOJ] IOIOI.swift" "b/giljihun/\353\254\270\354\236\220\354\227\264/[BOJ] IOIOI.swift" new file mode 100644 index 0000000..a6ad014 --- /dev/null +++ "b/giljihun/\353\254\270\354\236\220\354\227\264/[BOJ] IOIOI.swift" @@ -0,0 +1,34 @@ +import Foundation + +// MARK: - Input +guard let N = Int(readLine() ?? "") else { exit(0) } +guard let M = Int(readLine() ?? "") else { exit(0) } +guard let S = readLine() else { exit(0) } + +let chars = Array(S) +var result = 0 +var count = 0 + +// 현재 인덱스 위치 +var i = 1 + +while i < M - 1 { + // IOI가 등장? -> 카운트를 1개 올림 + if chars[i - 1] == "I", chars[i] == "O", chars[i + 1] == "I" { + count += 1 + // 카운트가 만약 N이 되었다? 우리가 찾는 패턴이 등장한 것. + if count == N { + result += 1 + // 근데 바로 다음에 중복적으로 패턴이 나올 수도 있으니, 1을 줄이기. + count -= 1 + } + i += 2 + } + // 다음으로 이동했더니 IOI가 안나옴? -> 0으로 초기화. + // 그리고 다음 인덱스부터 다시 비교시작. + else { + count = 0 + i += 1 + } +} +print(result) \ No newline at end of file