문제

(사진을 누르면 문제로 이동합니다 )
풀이
백준 2847 : 이 문제에서 가장 중요한 것은, 입력 받은 레벨을 높은 레벨부터 점점 작아지게 만드는 것이다.
어차피 마지막 레벨이 가장 커야 하기 때문에, 마지막 레벨을 기준으로 삼아서, 더 낮은 레벨이 최소 1의 점수가 낮도록 점수를 깎아서 재할당을 해주면 된다. 그리고 점수가 깎인 만큼 카운트(cnt)해서 출력할 수 있도록 했다.
# 총 N 개의 레벨 입력 받기
N = int(input())
levels = [] #레벨을 담을 빈 리스트
for _ in range(N):
level = int(input())
levels.append(level)
# 레벨 높은 순부터 낮은 순으로 순회하며 이전보다 작아지게 만들기
levels.reverse() # 역순으로 재배치
cnt = 0
for i in range(1,len(levels)):
if levels[i] >= levels[i-1]:
minus = levels[i] - levels[i-1]+1
levels[i] -= minus
cnt += minus
# 출력
print(cnt)
No Responses