【文字列処理メニュー】> パスワード作成 (paizaランク C 相当) [難易度: 1462 ±14]
※リンク先へ移動するためには[paiza]へのログインが必要です。
K さんは paiza のアカウントを作成することにしました。そのためには、パスワードの設定が必要なことがわかりました。
そこで K さんは忘れないように、次のようなルールにのっとって N 文字のパスワードを設定することにしました。
・ ルール
K さんは N 文字のうち、 Q 文字だけ覚えておく文字を決めておく。
具体的には n_i 文字目を c_i とだけ決めて、残りの全ての文字を C にする。
K さんの設定したパスワードを当ててください。
例
・ N = 5 , Q = 1 , n_1 = 2 , c_1 = 'T' , C = 'K' のとき
パスワードは 5 文字であり、 2 文字目が 'T' , それ以外の文字を 'K' としたものである "KTKKK" が K さんのパスワードとなる。
入力値(例)
5
1
2 T
K
出力値(例)
KTKKK
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $n = trim(fgets(STDIN)); $q = trim(fgets(STDIN)); for($i = 0; $i < $q; $i++) { $key_value = explode(" ", trim(fgets(STDIN))); $key = $key_value[0]; $value = $key_value[1]; $number[$key-1] = $value; } $k = trim(fgets(STDIN)); for($j = 0; $j < $n; $j++) { $flag = isset($number[$j]); if($flag == true) { echo $number[$j]; } else { echo $k; } } ?> |
感想
連想配列を作って、そこからkeyが空だった場合が分からなくて試行錯誤しました。ここでは、isset()を使って$flagに入れています。$flagがtrueのとき連想配列のvalueを表示するようにしました。難しかったです。(*'ω'*)