paizaの練習問題を解く 時刻に伴う移動 Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 時刻に伴う移動 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 結構躓きましたが、最終的にこのように実装しました。 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]) } // 現在の時間 ct := 0 // 現在の方向 cd := 120 dir := []string{"N", "E", "S", "W"} for i := 0; i < n; i++ { var t int var d string fmt.Scan(&t, &d) lr := 1 if d == "L" { lr = -1 } l := t - ct // fmt.Println("l: ", l) for j := 0; j < l; j++ { switch dir[cd%4] { case "N": sy-- case "S": sy++ case "E": sx++ case "W": sx-- } if sy >= h || sx >= w || sy < 0 || sx < 0 || s[sy][sx] == '#' { fmt.Println("Stop") return } else { fmt.Println(sy, sx) } } ct = t cd += lr } } 十分すっきり実装できていますね👍 ...