備忘録

Paiza CランクレベルアップメニューPHP『辞書』編 解答。

Yj
こんにちは!!お疲れ様です。続いて「辞書」☺️

STEP: 1 辞書の基本

下記の問題は連想配列を使いました。こちら参考にしました。

#01:連想配列の概念#05:foreachで配列の値を取り出す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の empty, isset, 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";
    }
?>

 

-備忘録

© 2024 Yj Blog Powered by AFFINGER5