paizaの練習問題を解く 盤面の情報変更 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 盤面の情報変更 | レベルアップ問題集 | プログラミング学習サイト【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], "")) } } テストケースもこれで全部通りました。 ...

2026年2月19日 · にあえん