paizaの練習問題を解く 区間和の計算 Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 累積和の計算 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var n, m int fmt.Scan(&n) s := make([]int, n) for i := 0; i < n; i++ { var a int fmt.Scan(&a) if i > 0 { s[i] = s[i - 1] + a } else { s[i] = a } } fmt.Scan(&m) for i := 0; i < m; i++ { var l, r int fmt.Scan(&l, &r) if l > 1 { fmt.Println(s[r] - s[l - 1]) } else { fmt.Println(s[r]) } } } ですが、これだとテストがすべて動作しませんでした。 解説コードを見て修正します。 package main import "fmt" func main(){ var n, m int fmt.Scan(&n) a := make([]int, n) s := make([]int, n) x := 0 for i := 0; i < n; i++ { fmt.Scan(&a[i]) x += a[i] s[i] = x } fmt.Scan(&m) for i := 0; i < m; i++ { var l, r int fmt.Scan(&l, &r) fmt.Println(s[r] - s[l] + a[l]) } } これで動くようになりました👍