こんにちは、ナナオです。

前回に引き続き競プロを実施していきたいと思います。

今回の問題は以下です。

出口のない迷路 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】

実装

実装は以下の通りです。

package main
import "fmt"
type Location struct {
    Str string
    First int
    Second int
}
func main(){
    var n, k, s int
    fmt.Scan(&n, &k, &s)
    var locs []Location
    for i := 0; i < n; i++ {
        var fst, scd int
        var str string
        fmt.Scan(&str, &fst, &scd)
        locs = append(locs, Location {
            Str: str,
            First: fst,
            Second: scd,
        })
    }
    r := locs[s - 1].Str
    for i := 0; i < k; i++ {
        var m int
        fmt.Scan(&m)
        if m == 1 {
            s = locs[s - 1].First
        } else {
            s = locs[s - 1].Second
        }
        r += locs[s - 1].Str
    }
    fmt.Println(r)
}

構造体で1番目、2番目の地点管理を行いました。たぶんこういうことでしょう。

解説を見たらfirst, secondという定義ではなく、roadという配列を構造体に定義していました。確かにそっちの方が実態に即しているか…

ということで今回はこれで👍