shigechi-64's diary

自由・自主・自立・自尊

paizaのスキルチェックで使える標準入力取得用コード(PHP)

入力が1行の場合と複数行の場合があるのでそれぞれ掲載してみる。

paiza_get_oneline.php

<?php

//1行入力
$single_line_input = trim(fgets(STDIN));
//不要な改行コードを取り除く
$single_line_input = str_replace(array("\r\n","\r","\n"), '', $single_line_input);
//スペースで分解して配列に格納
$array = explode(" ", $single_line_input);

取得したい値がひとつだけで、配列に格納する必要がない場合もあるのでそのあたりは臨機応変に。

paiza_get_multiline.php

<?php

//1行入力、スペースで分解して配列に格納
$first_line_input = trim(fgets(STDIN));
$first_line_input = str_replace(array("\r\n","\r","\n"), '', $first_line_input);
$array_first_line = explode(" ", $first_line_input);

//続く入力を格納する配列
$array_below_lines = [];

// 指定の回数だけループ
for ( $i = 0; $i < $array_first_line[0]; $i++) {
    $below_line = trim(fgets(STDIN));
    $below_line = str_replace(array("\r\n","\r","\n"), '', $below_line);
    $below_line = explode(" ", $below_line);
    array_push($array_below_lines, $below_line);
}

1行目で取得した入力(配列)の[0]番目分だけループを回してそれ以下の入力を取得するパターン。
これも問題によって微妙に変える必要はありますが、入力されるデータの個数を指定する箇所が必ずあるのでその分だけループを回せばOKかと思います。

だいたいこの2パターンのどちらか、もしくは組み合わせでいけると思います。