[BOJ]2847号:ゲームを作る東俊


✔10.質問する


学校でグラフィックの授業を受けた東俊は、授業中に聞いた内容に基づいてスマートフォンゲームを作った.ゲームにはNレベルがあり、各レベルがクリアされるとポイントが与えられます.プレイヤーのスコアはクリア時に獲得したスコアの和であり、このスコアをもとにオンラインランキングを行う.東俊は難易度順に等級を並べた.しかし、ミスは難しい等級よりも容易な等級が高い場合をもたらした.
この問題を解決するために、東俊は特定のレベルの点数を減らそうとした.これにより、各レベルをクリアしたときに与えられる点数を増加させることができる.
プログラムを作成して、各レベルの通関時の点数を求めて、何回減らせばいいですか.点数はいつも正の値で、マイナス1は1です.いつも答えがある場合だけを与えます.多くの正解があれば、点数を最小限に抑える方法を見つけなければならない.
[入力]
最初の行は、1つのレベルの数Nを与える.(1≦N≦100)次のN行において、各レベルがクリアされた後に得られるスコアは、第1レベルから最後レベルまで順次与えられる.スコアは20000未満の正の整数です.
[出力]
最初の行を出力して何点減らしますか.

😎 ソースコード

n = int(input())
score = []
count = 0

# 레벨 별 점수 입력
for level in range(n):
	score.append(int(input()))

score.reverse()
max = score[0]
	
for i in range(1, n):
	if score[i] < max:
		max = score[i]
	else:
		max -= 1
		count += score[i] - max

print(count)

問題が終わったら

maxの値を指定し、現在のスコアが最大値より小さいか大きいかを判断し、最大値を変更し、現在のスコアと最大値の違いに基づいてカウントすればよい.アルゴリズム自体はすぐに作成されましたが、for loopはどう書けばいいのか分からないので、文法を修正するのに時間がかかりました.