paizaの練習問題を解く 最安値を達成するには 1 Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 最安値を達成するには 1 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 議事コードをGoで書き起こしたのが以下の通りです。 package main import "fmt" func main(){ var n, a, b int fmt.Scan(&n, &a, &b) min := func(a, b int) int { if a < b { return a } else { return b } } dp := make([]int, n + 1) dp[1] = a for i := 2; i <= n; i++ { dp[i] = min(dp[i - 1] + a, dp[i - 2] + b) } fmt.Println(dp[n]) } これで解決しました。 部分式に書き起こすというのがDPのポイントですね。 (そこが難しい…) ということで今回はこれで👍