このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のデータセット選択メニューから「文字列の配列 (paizaランク C 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
縦 Hマス、横 W マスの H × W マスからなる迷路があります。上から i 行目、左から j 列目のマス は S_ij とあらわされ、 S_ij が「 #」のとき壁であり、「 .」のとき道です。自然数 r、 cが与えられるので、 S_rc が壁かどうか判定してください。
入力される値
1 2 3 4 5 |
H W r c S_1 S_2 ... S_H |
期待する出力
S_rc が壁なら「 Yes」を、壁ではないなら「 No」と出力してください。
1 |
N |
入力例1
1 2 3 4 |
3 4 1 2 ..#. #.## .... |
出力例1
1 |
No |
考え方
執筆中
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 先頭行の条件部分を読み込む let ia = readLine()!.split(separator: " ") .map { Int($0)! } // 迷路の縦横 R, C を代入する let r = ia[2] - 1 let c = ia[3] - 1 // 取り扱いやすくするように、 // ".#.#" -> [".", "#", ".", "#"] と分解して取り込む let sa = Array(AnyIterator { readLine() }) .map { $0.map { String($0) } } // 壁判定 print(sa[r][c] == "#" ? "Yes" : "No") |