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

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

今回の問題は以下です。

移動が可能かの判定・方向 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】

実装

実装しました。

ポイントとしてはlr変数を使って向きと座標の管理をしている点くらいですかね。

package main
import "fmt"
func main(){
    var h, w, sy, sx, n int
    fmt.Scan(&h, &w, &sy, &sx, &n)
    
    s := make([]string, h)
    for i := 0; i < h; i++ {
        fmt.Scan(&s[i])
    }
    
    dir := []string{"N", "E", "S", "W"}
    c := 120 // 現在の向き
    for i := 0; i < n; i++ {
        var d string
        fmt.Scan(&d)
        
        lr := 1
        if d == "L" {
            lr = -1
        }

        switch dir[c%4] {
            case "N": sx += lr
            case "S": sx -= lr 
            case "E": sy += lr
            case "W": sy -= lr
        }
        c += lr
        
        if sx >= w || sy >= h || 0 > sx || 0 > sy || s[sy][sx] == '#' {
            fmt.Println("Stop")
            break
        } else {
            fmt.Println(sy, sx)
        }
    }
}

👍