[백준/코틀린] 30804번: 과일 탕후루
실버 2
링크
풀이
두 포인터(l, r)를 이용해 두 종류 이하의 과일만 포함된 구간을 유지합니다.
r번째 과일을 추가했을 때
- 과일의 종류가 세 가지 이상이 되면 l을 이동시켜 구간을 축소하고,
- 두 가지 이하라면 r을 이동시켜 구간을 확장합니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fun main() {
val n = readln().toInt()
val fruits = readln().split(" ").map { it.toInt() }
val fruitCount = IntArray(10)
var ans = 0
var l = 0
var r = 0
while (r < n) {
if (fruitCount[fruits[r]] == 0 && fruitCount.count { it > 0 } == 2) {
fruitCount[fruits[l++]]--
} else {
ans = maxOf(ans, r - l + 1)
fruitCount[fruits[r++]]++
}
}
println(ans)
}
This post is licensed under CC BY 4.0 by the author.