Yj
こんにちは!!お疲れ様です。続いて「辞書」☺️
STEP: 1 辞書の基本
下記の問題は連想配列を使いました。こちら参考にしました。
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $nam_pro = explode(" ", trim(fgets(STDIN))); $key = $nam_pro[0]; $value = $nam_pro[1]; $set[$key] = $value; } $s = trim(fgets(STDIN)); foreach($set as $name => $property){ if($name == $s){ echo $property . "\n"; } } ?>
STEP: 2 辞書のデータ更新
下記の問題で「値のvalueの有無の確認の為is_null( )にを使いました。」こちら参考にしました。
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $name_order[] = trim(fgets(STDIN)); } $m = trim(fgets(STDIN)); //連想配列にして for($j=0; $j<$m; $j++){ $array = explode(" ", trim(fgets(STDIN))); $name = $array[0]; $damage = $array[1]; $set[$name] += $damage;//同じvalueのkeyを足し合わせる。 } $s = trim(fgets(STDIN)); //もし指定されたSが受けるダメージがない場合0を出力 if(is_null($set[$s])){ echo 0 . "\n"; } //受けるダメージを出力する echo $set[$s]; ?>
STEP: 3 辞書データの順序
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $s[] = trim(fgets(STDIN)); } // print_r($s); $m = trim(fgets(STDIN)); for($j=0; $j<$m; $j++){ $p_a = explode(" ", trim(fgets(STDIN))); $name = $p_a[0]; $damage = $p_a[1]; $p_damage[$name] += $damage; } // print_r($p_damage); sort($s); foreach($s as $value){ if(is_null($p_damage[$value])){ $p_damage[$value] = 0; // echo $p_damage[$value] . "\n"; } echo $p_damage[$value] . "\n"; // echo $value . "\n"; } ?>
FINAL問題 辞書
<?php list($num_A, $num_B, $num_C) = explode(" ", trim(fgets(STDIN))); // echo $group_A." ".$group_B." ".$group_C; for($i=0; $i<$num_A; $i++){ $group_AB = explode(" ", trim(fgets(STDIN))); $A = $group_AB[0]; $B = $group_AB[1]; $set[$A] = $B; } //Aが小さい順に ksort($set); //print_r($set);//Array([1] => 3 [2] => 1) for($i=0; $i<$num_B; $i++){ $group_BC = explode(" ", trim(fgets(STDIN))); $B = $group_BC[0]; $C = $group_BC[1]; $group[$B] = $C; } foreach($set as $a_key => $b_value){ // echo $a_key . " " . $b_value . "\n"; echo $a_key . " " . $group[$b_value] . "\n"; } ?>