꾸준히 합시다

백준 파이썬 2847번: 게임을 만든 동준이 본문

코딩 테스트 문제 풀이

백준 파이썬 2847번: 게임을 만든 동준이

tturbo0824 2021. 3. 19. 10:00

https://www.acmicpc.net/problem/2847

 

2847번: 게임을 만든 동준이

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

www.acmicpc.net

문제 유형: 그리디 알고리즘

 

# Solution 1

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

for _ in range(n):
    score.append(int(input()))
    
score = score[::-1]

answer = 0

for i in range(1, n):
    if score[i-1] <= score[i]:
        dif = (score[i] - score[i-1] + 1)
        score[i] -= dif
        answer += dif
        
print(answer)
  1. 우선 입력으로 받은 단계별 점수 배열을 뒤집어 준다.
  2. 이 배열의 첫 번째 점수는 마지막 단계의 점수가 되므로 가장 커야 한다.
  3. 두 번째 점수부터 현재 점수가 이전 점수보다 크거나 같으면 이전의 점수보다 1 적도록 수를 변경해준다. 현재 점수가 7, 이전 점수가 5라면 7을 5보다 1 작은 수 4로 변경한다.
  4. 변경된 수와 기존 점수의 차만큼을 출력 값(answer)에 누적시킨다. 7을 4로 변경했다면 3을 출력 값에 누적시키는 것.
Comments