【Go言語】文字列の配列
paizaラーニング レベルアップ問題集 データセット選択メニューの「文字列の配列」FINAL問題を解きました。
解答例
string型の二次元配列
行ごとに一旦line変数に格納し、strings.Split()で一文字ずつ分解します。その後配列変数linesにappendします。
package main
import (
"fmt"
"strings"
)
func main(){
var h, w, r, c int
fmt.Scanf("%d %d %d %d", &h, &w, &r, &c)
lines := make([][]string, 0)
for i:=0; i<h; i++ {
var line string
fmt.Scanf("%s", &line)
temp := strings.Split(line, "")
lines = append(lines, temp)
}
if lines[r-1][c-1] == "#" {
fmt.Println("Yes")
} else {
fmt.Println("No")
}
}
別解(rune型の二次元配列)
あらかじめh行w列のrune型配列を作り、fmt.Scan()で一文字ずつ受け取ります。文字の判定はダブルクォートではなくシングルクォートであることに注意。
package main
import (
"fmt"
)
func main(){
var h, w, r, c int
fmt.Scanf("%d %d %d %d", &h, &w, &r, &c)
var i, j int
lines := make([][]rune, h)
for i = range(lines) {
lines[i] = make([]rune, w)
}
for i=0; i<h; i++ {
for j=0; j<w; j++ {
fmt.Scan(&lines[i][j])
}
}
if lines[r-1][c-1] == '#' {
fmt.Println("Yes")
} else {
fmt.Println("No")
}
}