空リストの掛ける数の意味が分からないので教えてほしい。
解決したいこと
入力例
8
5
2 3
3 6
5 7
3 7
1 5
入力形式
D
N
L(1) R(1)
:
:
:
L(N) R(N)
今現在書籍で競プロについて学習しております。
その中での問題について質問です。
ある会社ではD日間にわたってイベントが開催され、N人が出席します。参加者i(i = 1,2,...,N)、L(i)日目からR(i)日目まで出席する予定です。各日の出席者数を出力するプログラムを作成してください。という問題です。なぜ、
B = [ 0 ] * (D+2)、Answer = [ None ] * (D+2)
のところでD + 2をかけているのかが分からないので教えて頂きたいです。
発生している問題・エラー
エラーメッセージはありません。
該当するソースコード
D = int(input())
N = int(input())
L = [ None ] * N
R = [ None ] * N
for i in range(N):
L[i], R[i] = map(int, input().split())
# 前日比に加算
B = [ 0 ] * (D+2)
for i in range(N):
B[L[i]] += 1
B[R[i]+1] -= 1
# 累積和をとる
Answer = [ None ] * (D+2)
Answer[0] = 0
for d in range(1, D+1):
Answer[d] = Answer[d - 1] + B[d]
# 出力
for d in range(1, D+1):
print(Answer[d])
自分で試したこと
D + 1でもいけるか試して見ましたが、通るテストコードと通らなかったテストコードがありました。