백준 27496번
https://www.acmicpc.net/problem/27496
var sum = 0L
val que: Queue<Int> = LinkedList()
StringTokenizer(br.readLine()).run {
for (i in 1..N) {
val temp = nextToken().toInt()
que.offer(temp)
sum += temp
if (que.size > L) {
sum -= que.poll()
}
if (sum in 129..138) ans++
}
}
Queue 자료구조를 통해서 문제를 해결했다.
que
의 사이즈가 L
보다 커질 경우 하나씩 sum
값을 줄여가며 범위에 들어가는 값을 찾으면 된다.
import java.io.*
import java.util.*
// input
private lateinit var br: BufferedReader
// variables
private var N = 0
private var L = 0
private var ans = 0
fun main() {
br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
input()
bw.write(solve())
bw.close()
} // End of main()
private fun solve(): String {
val sb = StringBuilder()
sb.append(ans)
return sb.toString()
} // End of solve()
private fun input() {
StringTokenizer(br.readLine()).run {
N = nextToken().toInt()
L = nextToken().toInt()
}
var sum = 0L
val que: Queue<Int> = LinkedList()
StringTokenizer(br.readLine()).run {
for (i in 1..N) {
val temp = nextToken().toInt()
que.offer(temp)
sum += temp
if (que.size > L) {
sum -= que.poll()
}
if (sum in 129..138) ans++
}
}
} // End of input()