こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
移動が可能かの判定・方向 | レベルアップ問題集 | プログラミング学習サイト【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)
}
}
}
👍