見出し画像

【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")
    }
}


この記事が気に入ったらサポートをしてみませんか?