問題
全長 メートルのトンネルには、 人の人がいます。
人 はトンネルの西端から メートルの位置にいて、方向 (東または西)へ歩いています。
トンネルの幅は狭いため、2人が同じ位置にきたらお互い移動方向を変えます。
全員が秒速1メートルで歩くとき、最後の人がトンネルの外に出るのは何秒後になるでしょうか。
[制約]
🔹
🔹
解き方・ソースコード
まずこの問題を解くために思いつくのは人の動きをシミュレーションすることですが、ケースによっては衝突回数が 程度になりとても時間がかかってしまいます。
そこで人同士を区別しないで考えてみると、2人が衝突して向きを変えることと2人がすれ違うことは同じことであるが分かります。
したがってこの問題は、以下のように言い換えることができます。
トンネルの幅は十分広いため、2人が同じ位置に来ても、すれ違ってそのまま進みます。 最後の人がトンネルの外に出るのは何秒後になるでしょうか。
言い換えた問題を考えると、人 がトンネルの外に出るまでの時間は、移動方向が東の場合 秒、移動方向が西の場合 秒となりますので、その最大値を出力すればよいことになります。
[Google Colaboratory]
1 | #--------- 入力例1 --------- |
[実行結果(入力例1)]
解: 80
最後の人がトンネルから出るのは 80秒後 であることが確認できました。