0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

B - Five Dishes AtCoder

Last updated at Posted at 2022-04-28

問題

回答

a = [int(input()) for _ in range(5)]

b = []
c = 0

ans = 0

for i in range(5):
  if a[i] % 10 != 0: #10で割り切れなかったら
    c = max(c, 10 - a[i] % 10) #標準入力の中で一番大きいあまりの差分である数をcに代入。5こめは10の倍数まで足す必要ないので最後にひく。
    a[i] += 10 - a[i] % 10 #余りに対して10の倍数になるように足す。
    b.append(a[i]) #10までの標準入力に10の位の数までの数字を足した数字を配列として代入。
  else: #割り切れたら
    b.append(a[i]) #bに配列として代入する。
    
ans = sum(b) - c #bの数は全てあまりの数を入れている。最後の数は10の位になる時刻を待つ必要ないのでcを引く。

print(ans)

ポイント

10の位の時刻まで一番差分が大きい数を最後に足せば、最短の時刻になる。最後に注文する数は10の位の時刻になるまで待つ必要がないから。

#標準入力
101
86
119
108
57

上記の標準入力の時、前の順番を変えてARC カレー →ABC 丼 → AGC パスタ → ATC ハンバーグ → APC ラーメンの順にしても合計値は変わらない。

前検索を使うことはわかったが、10の位の時刻まで一番差分が大きい数を最後に足せば良いという部分がわからず。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?