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 //入力例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";//それぞれ参加者の解答出力する。 } ?>