/* 1.何カ国か数字を取る 2.各国の都市名をキーに、値を時間差にもつ配列を作る : Done!!! 3.最後の行の基準国名と投稿時刻をそれぞれ、別々($stdCountry, $stdTime)の変数に格納する。 Done!!! 4.基準国が、標準時刻からの時間差を表す、変数($stdHour)に格納する。 Done!!! 5.各国の標準時間からの時間差($国名Hour)と$stdHour との差を出す。$diffHour = $stdHour - $国名Hour Done!!! 6.$diffHour が、正であれば、$firt2Time - $diffHour。負であれば、$firt2Time + $diffHour となる。 7.それぞれの時刻を配列$resultTime = []; に格納し、forループで、出力する。 */ $n = (int) trim(fgets(STDIN)); $arr = []; $arrCountry = []; // 国 配列 $arrTime = []; // 時差 配列 for ($i = 0; $i < $n; $i++) { list($country, $time) = explode(' ', trim(fgets(STDIN))); $arr[$country] = $time; $arrCountry[] = $country; $arrTime[] = $time; } // // var_dump($arrCountry); [$stdCountry, $stdTime] = explode(' ', trim(fgets(STDIN))); // // var_dump($stdTime); $firt2Time = substr($stdTime, 0, 2); // 基準時刻の「何時」を意味する。 $last2Time = substr($stdTime, 2, 3); // 基準時刻の「何分」を意味する。 // // 基準国が、何番目かを調べる。$index = 何番目 $index = -1; // 初期値を設定する foreach ($arrCountry as $key => $value) { if ($value === $stdCountry) { $index = $key; // 見つかったらキー番号を代入してループを抜ける break; } } // echo $index; // 基準国の標準時間からの時差数 $stdHour = $arrTime[$index]; // echo $stdHour; // 5. のやつ $diffHour = []; foreach ($arr as $country => $time) { // $time は、各国の標準時間との時間差 $diffHour[] = abs($stdHour - $time); } // print_r($diffHour); // それぞれの国の時刻を表す、配列$resultTime = []; $resultTime = []; $i = 0; foreach ($diffHour as $v) { if ($stdHour >= $arrTime[$i]) { // echo $firt2Time - $v . "\n"; $resultTime[] = $firt2Time - $v; } elseif ($stdHour < $arrTime[$i]) { $resultTime[] = $firt2Time + $v; } $i++; } // print_r($resultTime); // 最後に、マイナスの場合は、+24 をする。 // $last2Time を付け足す。 foreach ($resultTime as $z) { if ($z < 0) { $z += 24; } echo sprintf("%02d", $z) . $last2Time . PHP_EOL; } ?>
sprintf("%02d", 対象文字列)
これは、「1文字の場合、先頭に 0 を付け足して、2文字にする」という意味。