【ABC140 B】「Buffet」を解く【Python3】

abc140b

「AtCoder」解説一覧へ

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(関数、イテラブル)

【ABC140】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です