こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
盤面の情報変更 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
問題
前回の問題で、盤面の変更を伴う場合の実装をしろというものですね。
入力は以下の通りです。
H W N
S_0
...
S_(H-1)
y_1 x_1
...
y_N x_N
私の実装は以下の通りです。
package main
import (
"fmt"
"bufio"
"os"
"strings"
)
func main(){
var h, w, n int
fmt.Scan(&h, &w, &n)
sc := bufio.NewScanner(os.Stdin)
s := make([][]string, h)
for i := 0; i < h; i++ {
sc.Scan()
s[i] = strings.Split(sc.Text(), "")
}
for i := 0; i < n; i++ {
var x, y int
fmt.Scan(&x, &y)
s[y][x] = "#"
}
for i := 0; i < h; i++ {
fmt.Println(strings.Join(s[i], ""))
}
}
これだとx, yの読み込みに失敗してしまうのと、入力はy_n x_nで入力されるので修正しました。
これにすることでだいぶコードがすっきりしましたね。
package main
import (
"fmt"
"strings"
)
func main(){
var h, w, n int
fmt.Scan(&h, &w, &n)
s := make([][]string, h)
for i := 0; i < h; i++ {
var line string
fmt.Scan(&line)
s[i] = strings.Split(line, "")
}
for i := 0; i < n; i++ {
var x, y int
fmt.Scan(&y, &x)
s[y][x] = "#"
}
for i := 0; i < h; i++ {
fmt.Println(strings.Join(s[i], ""))
}
}
テストケースもこれで全部通りました。
よかったよかった。