1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランクレベルアップメニュー(言語選択)
  4. 問題一覧 Bash(Beta)編
  5. 陣取りのターン数 Bash(Beta)編

Aランクレベルアップメニューのアイコン
陣取りのターン数 Bash(Beta)編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

盤面の情報とマスを '?' にする距離の個数 N, マスを '?' にするときの距離 l_i が与えられます。

現在プレイヤーのいるマスは '*' になっており、そのマスはプレイヤーの陣地です。

プレイヤーは次の操作をできなくなるまで続けます。

・ 現在の陣地から 1 マス移動することで到達できるマスをプレイヤーの陣地にして、'*' にする。
ただし、障害物( '#' )のマスは陣地にできない。また、プレイヤーの開始時の位置からの距離が l_i であるとき、'*' の代わりに '?' にする。

なお、はじめにプレイヤーのいるマスの開始時の位置からの距離は 0 とします。

入力される値

H W N       
S_0
...
S_(H-1)
l_1
...
l_N


・ 1 行目では、盤面の行数 H , 列数 W , l の入力の回数 N が与えられます。
・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、S_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。(0 ≦ j < W)
・ 続く N 行では、マスを '?' にするときの開始時の位置からの距離 l_i が与えられます。(1 ≦ i ≦ N)


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

H 行の出力

・ 操作後の盤面を H 行で出力してください。

T_0
...
T_(H-1)

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ H , W , N ≦ 20
・ 0 ≦ l_i ≦ 100
・ S は W 文字の文字列
・ S の各文字は '.' または '*' または '#'
・ '*' のマスは1つ

入力例1

3 3 2
*..
...
...
1
3

出力例1

*?*
?*?
*?*

入力例2

10 10 5
##*#####..
..........
.#.#......
##..#.....
#########.
..........
..........
##########
..........
..........
1
5
4
7
9

出力例2

##*#####*?
**?**??*?*
?#*#??*?*?
##*?#*?*?*
#########*
**********
**********
##########
..........
..........

問題一覧へ戻る

ページの先頭へ戻る