こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
RPG | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
以下のように実装しました。
package main
import "fmt"
type Hero struct {
l int
h int
a int
d int
s int
c int
f int
}
func main(){
var n, k int
fmt.Scan(&n, &k)
heroes := make([]Hero, n)
for i := 0; i < n; i++ {
fmt.Scan(
&heroes[i].l,
&heroes[i].h,
&heroes[i].a,
&heroes[i].d,
&heroes[i].s,
&heroes[i].c,
&heroes[i].f,
)
}
for i := 0; i < k; i++ {
var e string
var j int
fmt.Scan(&j, &e)
switch e {
case "levelup":
var h, a, d, s, c, f int
fmt.Scan(&h, &a, &d, &s, &c, &f)
heroes[j - 1].l++
heroes[j - 1].h += h
heroes[j - 1].a += a
heroes[j - 1].d += d
heroes[j - 1].s += s
heroes[j - 1].c += c
heroes[j - 1].f += f
case "muscle_training":
var h, a int
fmt.Scan(&h, &a)
heroes[j - 1].h += h
heroes[j - 1].a += a
case "running":
var d, s int
fmt.Scan(&d, &s)
heroes[j - 1].d += d
heroes[j - 1].s += s
case "study":
var c int
fmt.Scan(&c)
heroes[j - 1].c += c
case "pray":
var f int
fmt.Scan(&f)
heroes[j - 1].f += f
}
}
for i := 0; i < n; i++ {
fmt.Println(
heroes[i].l,
heroes[i].h,
heroes[i].a,
heroes[i].d,
heroes[i].s,
heroes[i].c,
heroes[i].f,
)
}
}
条件分岐とかがちょっと長いですが、まぁ一つ構造体作ってあげればすぐ実装できました。
ということで今回はこれで👍