【日付セット】最長の連休2019 (paizaランク D 相当) 解答例 – PHP編【paiza】
【日付セット】 > 最長の連休2019 (paizaランク D 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
最適解ではないにしろ、これがDランク問題…(;^ω^)
他にいい方法があるんだろうなぁ…
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?php $y = 2019; $m = 1; $d = 1; $array = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; $counter = 0; $holiddayarray = array(); $holiday = array( "1/1", "1/14", "2/11", "3/21", "4/29", "4/30", "5/1", "5/2", "5/3", "5/4", "5/5", "5/6", "7/15", "8/11", "8/12", "9/16", "9/23", "10/14", "10/22", "11/03", "11/04", "11/23", ); $oneday = 86400; while($y != 2020 || $m != 1 || $d != 1){ $word = $y."/".$m."/".$d; $ans = strtotime($word); $nextday = $ans + $oneday; $next = date("Y/n/j",$nextday)."/".date("w",$nextday); $test = explode("/",$next); $y = $test[0]; $m = $test[1]; $d = $test[2]; $w = $array[$test[3]]; $test1 = $m."/".$d; $word = $y."/".$m."/".$d; $judge = in_array($test1,$holiday,true); if($judge || $w == "Sat" || $w == "Sun"){ $counter++; } else { if($counter > 0){ array_push($holiddayarray,$counter); } $counter = 0; } } echo max($holiddayarray); ?> |