N種類の料理が食べ放題のビュッフェで、全種類の料理を条件の通りに食べ終えたとき、高橋君が得た満足度の合計を答える問題です。
Aiの順番で食べるため、料理Aiの満足度Biを足していき、条件に沿うものがあれば、加えて満足度Ciを足すことで答えを導くことができます。
提出
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
c = list(map(int, input().split()))
ans = 0
for i in range(n):
ans += b[a[i]-1]
if i>0 and a[i] == a[i-1]+1:
ans += c[a[i-1]-1]
print(ans)
Nは整数、A,B,Cは整数のリストで受け取ります。
for文を用いて、Biを「ans」に足していきます。
リストのインデックスは0から始まることに注意です。
if文では、Ciを足すかどうかを判定しています。
今のAiとAi-1に1を足したものが同じであれば、満足度Cを追加で得ています。
料理「Ai-1」のCを足すのですが、インデックスを合わせるために、ここでも「-1」をしています。
split()メソッド
split()メソッドは、区切り文字を指定して、文字列を分割します。
区切り文字を指定しない場合、空白、タブ、改行で分割されます。
str.split("区切り文字")
map()関数
map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。
map(関数、イテラブル)