備忘録

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


Yj
こんにちは!!引き続き解答をご覧ください。☺️

STEP: 1 3の倍数のカウント

<?php
   $n = trim(fgets(STDIN));
   $a = explode(" ", trim(fgets(STDIN)));
   $count = 0;
   for($i = 0 ; $i< $n; $i++){
        if($a[$i] % 3 == 0){
              $count ++;
        }
    }
    echo $count . "\n";
    }
?>

 

STEP: 2 フラグ管理

下記の問題はin_array( )関数を使いました。こちら参考にしました。

特定の値が配列に含まれているか調べる

<?php
   $n = trim(fgets(STDIN));
   for($i =0; $i < $n; $i++){
     $a[] = trim(fgets(STDIN));
   }
   $search = 7;
   $key = in_array($search, $a);//$a配列に$searchが含まれているか確認する
   if ($key){
     echo "YES\n";
   }else{
     echo "NO\n";
   }
?>

 

STEP: 3 インデックス取得

下記の問題はcontinueとbreakを使いました。こちら参考にしました。

PHPのcontinueとbreakでループをスキップ、終了する方法

<?php
   //入力例1の場合
   $n = trim(fgets(STDIN)); //2
    
    for($i=1; $i<=$n; $i++){ //1 から n まで番号が付けられた人々
       $a = trim(fgets(STDIN)); //5 6
       $list[$i] = $a; 
    } 
    $k = trim(fgets(STDIN));//6

    // 検索処理 
    foreach ($list as $key=>$value) { //[1]=>5 [2]=>6
    if ($value !== $k)continue; //2つが同じではなければ飛ばす
        echo $key . "\n"; //最も小さい番号で財産が k 円の人を出力
        break; // ここで打ち切り
    }
?>

 

STEP: 4 多重ループ

下記の問題は以前も参照しました。strpos( )を使いました。こちら参考にしました。

特定の文字列を含むかのチェック

<?php
   //入力例2の場合
    $m = trim(fgets(STDIN));//2の文字
    for($i=0; $i<$m; $i++){ $m_list[] = trim(fgets(STDIN));//[0] => c //[1] => d
       
    }
    
    $n = trim(fgets(STDIN));//2の文字列
    for($j=0; $j<$n; $j++){ $n_list[] = trim(fgets(STDIN));//[0] => cat //[1] => dog
        
    }
    
    for($i=0; $i<$m; $i++){
       for($j=0; $j<$n; $j++){
           if(strpos($n_list[$j], $m_list[$i]) !== false){
                echo "YES\n";
            }else{
                echo "NO\n";
            }
        }
    }
?>

 

FINAL問題 forループ

下記の問題のポイントは$countを初期化する。っですね。

<?php
   //入力例2の場合
    list($n, $m, $k) = explode(" ", trim(fgets(STDIN)));//$n=参加者数 //$m=解答数 //$k=解答
    
    for($i=0; $i<$n; $i++){//参加者分loopこの時4回。
        $each_ans = explode(" ", trim(fgets(STDIN)));
        
        $count = 0;//それぞれの解答出力する為、1人の解答終了後に初期化。
        for($j=0; $j<$m; $j++){ //解答数は5つ。
            if($each_ans[$j] == $k){ //解答の2が一致するか確認。
                $count++;//解答の2がいくつあるかカウントする。
            }
        }
        echo $count . "\n";//それぞれ参加者の解答出力する。
    }
?>

 

-備忘録

© 2024 Yj Blog Powered by AFFINGER5