🐙

【PHP】 list()、sscanf()の使うコツ

2021/03/07に公開

競技プログラミングでありがちなケース。

標準入力が一行半角スペース区切りの場合(例、「M N」)は、list()を使った方がきれいにかけることを知った。なおsscanf()でも書ける模様。

以下の通り。

ただし、一行の要素が多い場合は面倒そうだ。

<?php
   // 今まで
   //$input_line = fgets(STDIN); // "1 100"
   //$start = explode(" ", $input_line)[0]; //1
   //$end = explode(" ", $input_line)[1]; //100
   
   // これから
   $input_line = fgets(STDIN); // "1 100"
   list($start, $end) = explode(" ", $input_line);
   //こっちでもOK
   $input_line = fgets(STDIN); // "1 100"
   sscanf($input_line, "%d %d", $start, $end);
   
   echo $start.PHP_EOL; // 1
   echo $end.PHP_EOL;  //  100
   
?>

Discussion