[Python] S4 2847번: 게임을 만든 동준이

송진영·2023년 8월 20일
0

백준

목록 보기
5/7

문제 풀이

이전 레벨의 점수가 다음 레벨의 점수보다 낮아지도록 바꾸면 된다.
하지만 앞에서부터 확인하면서 바꿔주면 경우의 수가 더 많아지기 때문에 뒤에서부터 확인해준다.

  1. 맨 마지막 점수(높은 레벨의 점수)부터 그 앞의 수(낮은 레벨의 점수)와 비교한다.
  2. 낮은 레벨의 점수가 높은 레벨의 점수보다 높거나 같다면 낮은 레벨의 점수를 한 단계 높은 레벨의 점수보다 1 낮게 바꾼다.
  3. 이 과정을 뒤에서 앞으로 반복한다.

ex) 점수 5 5 5가 주어졌을 경우, 1~3 레벨까지 모두 점수를 5씩 주기 1, 2 레벨에 문제가 있다.
5 5 5 -> 3 4 5 이렇게 바뀌게 되는데 결론적으로 5-(12) 5-(11) 5 이기 때문에 답이 3이 된다.

n = int(input())
score = []
for i in range(n):
    score.append(int(input()))

count = 0
for i in range(n-2, -1, -1):
    if score[i] >= score[i+1]:
        count += score[i] - score[i+1] + 1
        score[i] = score[i+1]-1

print(count)
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글