프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 2847 게임을 만든 동준이 Python

중규리 2024. 1. 4. 15:56

🐸 문제 정보

 

2847번: 게임을 만든 동준이

학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어

www.acmicpc.net

 

🤖 알고리즘

그리디

 

⏱️ 풀이 시간

06.12m

 

📝 풀이

아주 간단한 그리디 문제였다. 풀이 순서는 아래와 같다.

  1. 점수를 뒤에서부터 순회한다.
  2. 현재 요소가 직전 요소보다 크거나 같다면, 직전 요소보다 1 작은 수를 대입한다.
    • 이 때 현재 요소의 원래 값과 직전 요소보다 1 작은 수의 차이가 점수를 감소시키는 횟수이며, 이것의 총합이 답이다.

 

🧑‍💻 나의 답

# pypy3

import sys
input = sys.stdin.readline

n = int(input().rstrip())
scores = [int(input().rstrip()) for _ in range(n)]
res = 0

for i in range(n - 2, -1, -1):
    if scores[i] >= scores[i + 1]:
        temp = scores[i + 1] - 1
        res += (scores[i] - temp)
        scores[i] = temp

print(res)