こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
最長の区間 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
以下のように実装しました。
package main
import "fmt"
func main(){
var n, m int
fmt.Scan(&n, &m)
a := make([]int, n)
x := 0
s := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
x += a[i]
s[i] = x
}
sum := 0
d := 0
l := 0
for r := 0; r < n; r++ {
sum += a[r]
for sum > m {
sum -= a[l]
l++
}
c := r - l + 1
if d < c {
d = c
}
}
fmt.Println(d)
}
なんででしょう、しゃくとり法がなぜか直感的にちゃんと理解できていない…
もっとAIと壁打ちして、ちゃんと理解できるようにしないと…!!
ということで今回はこれで👍