본문으로 바로가기

あなたは PAIZA デパートのセール会場に来ています。
このセールでは、X 品以上購入すると、値段の安い順 に Y 品が無料になります。

あなたはこのセールで N 個の品物を一度に購入しようとしています。
合計で何円払う事になるかをプログラムを書いて計算してください。

入力例 1 の場合は、3 品以上買うと 1 品無料なので最安値の 1 個が無料になり 1400 円となります。

入力例 2 の場合は、5 品以上買うと 5 品無料ですが、3 品しか買わないので 900 円になります。

評価ポイント10回のテストケースで、正答率、実行速度、メモリ消費量をはかり得点が決まります。
より早い解答時間で提出したほうが得点が高くなります。
  1. 複数のテストケースで正しい出力がされるか評価(+50点)
  2. 解答までの速さ評価(+50点)
入力される値

入力は以下のフォーマットで与えられます。

N X Y
p_1
p_2
...
p_N
  • ・1 行目には、購入する商品の数 N、セール対象となる購入の数 X、無料になる商品の数 Y がこの順に整数で半角スペース区切りで与えられます。
  • ・続く N 行の i 行目 (1 ≦ i ≦ N) には、i 個目の商品の値段 p_i が整数で与えられます。
  • ・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が 1 つ入ります。

それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力与えられた全商品を一度に購入する際にかかる値段を整数で出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
条件

すべてのテストケースにおいて、以下の条件をみたします。

  • ・1 ≦ N ≦ 1,000
  • ・1 ≦ Y ≦ X ≦ 1,000
  • ・1 ≦ p_i ≦ 1,000 (1 ≦ i ≦ N)
入力例1
5 3 1
500
300
400
200
100
出力例1
1400
入力例2
3 5 5
400
300
200
出力例2
900

一度に 한번에

何円払う事になるか

N,X,Y = map(int,input().split())
# print(N,X,Y)
price_list=[int(input()) for i in range(N)]
# print(price_list)
if len(price_list)>=X:
    for i in range(Y):
        price_list.remove(min(price_list))
    print(sum(price_list))
else:
    print(sum(price_list))

'TIL > Algorithm' 카테고리의 다른 글

C034:先生の宿題  (0) 2024.04.09
C135:商品の割引  (0) 2024.04.07
C030:白にするか黒にするか  (0) 2024.04.05
0 합성수 찾기  (0) 2022.12.23
0 문자열 정렬하기 | lower | sorted | join  (0) 2022.12.23