paizaの練習問題を解く 1 マスの陣取り Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 1 マスの陣取り | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var h, w int fmt.Scan(&h, &w) s := make([]string, h) // 今いる座標 var sx, sy int for i := 0; i < h; i++ { fmt.Scan(&s[i]) for j, v := range s[i] { if v == '*' { sy = i sx = j } } } for i := 0; i < 4; i++ { var ly, lx int switch i { case 0: ly, lx = sy + 1, sx case 1: ly, lx = sy - 1, sx case 2: ly, lx = sy, sx + 1 case 3: ly, lx = sy, sx - 1 } if ly < h && lx < w && ly >= 0 && lx >= 0 { runes := []rune(s[ly]) runes[lx] = '*' s[ly] = string(runes) } } for i := 0; i < h; i++ { fmt.Println(s[i]) } } 正攻法ではないかもしれませんが、ループ回数はかなり抑えられているのでいいんじゃないでしょうか。 ...