paizaの練習問題を解く 1マスの陣取り2 Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 1マスの陣取り2 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var h, w int fmt.Scan(&h, &w) s := make([]string, h) var sy, sx 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 >= 0 && lx >= 0 && ly < h && lx < w && s[ly][lx] != '#' { runes := []rune(s[ly]) runes[lx] = '*' s[ly] = string(runes) } } for i := 0; i < h; i++ { fmt.Println(s[i]) } } やっぱりこの形で実装するのが一番効率的な気がするんだよなぁ…