N個の果物のうち、K種類を一個ずつ買うとき、合計の最小金額を求める問題です。
提出
n, k = map(int, input().split())
p = list(map(int, input().split()))
p.sort()
print(sum(p[:k]))
入力はすべて整数です。
pはリストにしておきます。
pをソートして、昇順にします。
金額の小さい果物から購入していけばいいので、スライス機能を用いてk個目までの果物のリストを作り、合計値を出力します。
合計はsum()で出せます。
split()メソッド
split()メソッドは、区切り文字を指定して、文字列を分割します。
区切り文字を指定しない場合、空白、タブ、改行で分割されます。
str.split("区切り文字")
map()関数
map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。
map(関数、イテラブル)
sort()メソッド
sort()メソッドを用いることで、リストに含まれる要素を昇順に並び替えることができます。
「reverse=True」を指定することで、降順にすることができます。
l = [3, 1, 4, 5, 2]
l.sort()
# l = [1, 2, 3, 4, 5]
l.sort(reverse=True)
# l = [5, 4, 3, 2, 1]
スライス機能
スライスを用いてインデックスを指定すると、特定の範囲の文字列を取得することができます。
インデックスは0から始まることに注意です。
開始インデックスから終了インデックスの一つ前まで取得します。
s = "atcoder"
print(s[2:5])
# > "cod"