書籍「問題解決のPythonプログラミング」を積んだままだったので読みながらコードを書いてみた.今回はその2章にある問題をといてみた.
(問題)有名人が参加する時間帯が事前に分かっているパーティーがある.このパーティーに1時間だけ参加するとき,最も多くの有名人がいる時間帯がいつか求める.
入力は有名人のいる時間帯をあらわすタプルで構成されている.例えば(6,8)の場合は6:00から8:00まで参加するということをあらわす.今回の場合は9:00 – 10:00が5人で最多となる.
簡単なコードを書いてみた.
guest_schdules = [(6,8), (6,12), (6,7), (7,8), (7,10), (8,9), (8,10), (9,12), (9,10), (10,11), (10,12), (11,12)] times = [] for schd in guest_schdules: times.append(('start', schd[0])) times.append(('end', schd[1])) times_sorted = sorted(times, key=lambda x: x[1]) current_guest = 0 max_time = max_value = 0 for time in times_sorted: if time[0] == 'start': current_guest += 1 elif time[0] == 'end': current_guest -= 1 if max_time < time[1]: max_time = time[1] max_value = current_guest print("Answer:", "time=", max_time, "num_of_guest=", max_value)
実行結果:
$ python3 2-party.py Answer: time= 9 num_of_guest= 5
コメントを残す