こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
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])
}
}
正攻法ではないかもしれませんが、ループ回数はかなり抑えられているのでいいんじゃないでしょうか。
今回はこれで。