Coding Test/백준

[BOJ] 2847번 게임을 만든 동준이 (Python)

욤미 2023. 2. 14. 22:37
728x90
반응형

[BOJ] 2847번 게임을 만든 동준이 (Python)

 

2847번: 게임을 만든 동준이

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

www.acmicpc.net

N개의 레벨마다 점수가 주어진다.

플레이어의 점수 = 얻은 점수의 합 → 온라인 순위를 매김

낮은 레벨의 점수가 높은 레벨보다 낮게 조정해야함.

 

조건

  • 낮은 레벨부터 점수가 입력으로 주어지기 때문에 마지막 입력으로 들어온 값이 가장 큰 값이다.
  • 낮은 레벨의 점수는 반드시 다음 레벨의 점수보다 낮아야 한다.
  • 점수 1을 낮추는 방법을 1이라고 했을 때, 최소의 방법을 구하라.
  • 크거나 같은 경우, 해당 값보다 1만큼만 작으면 된다.

풀이

  • 입력받은 N개의 숫자 중 마지막으로 입력받은 숫자를 가장 큰 점수로 생각한다.
  • 해당 점수를 기준으로 뒤에서부터 1씩 작아지게 조정한다.
  • 예를 들어, 5 5 5 → 마지막 5를 기준으로 → 3 4 5를 만든다.
  • 이 때 1를 낮추는 횟수는 2 + 1로 총 3이다.
n = int(input())
score = []
for i in range(n):
    score.append(int(input()))

count = 0
for i in reversed(range(n-1)):
    if score[i+1] <= score[i]:
        minus = score[i] - score[i+1] + 1
        score[i] = score[i] - minus
        count += minus

print(count)

 

n = int(input())
nums = [int(input()) for _ in range(n)]
result = 0

for i in range(n-1, 0, -1):
  if nums[i] <= nums[i-1]:
    result += nums[i-1] - nums[i] + 1
    nums[i-1] = nums[i] - 1
print(result)
728x90
반응형