こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
時刻に伴う移動 | レベルアップ問題集 | プログラミング学習サイト【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
}
}
十分すっきり実装できていますね👍
満足です。