본문 바로가기

알고리즘

파이썬) 게임을 만든 동준이 - BOJ

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

 

2847번: 게임을 만든 동준이

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

www.acmicpc.net

 

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

cnt = 0

for i in range(n-1, 0, -1):
    if arr[i] <= arr[i-1]:
        # 현재보다 현재 - 1 값이 같거나 크다면
        while arr[i] <= arr[i-1]:
            # 현재값이 더 클때까지
            cnt += 1
            arr[i-1] = arr[i-1] - 1

print(cnt)

 

문제를 쭉 풀어보다가 내가 그리디 문제를 공통적으로 약하다는 생각이 문득 들었다.

때문에 앞으로 몇 번은 그리디를 집중적으로 풀어볼까 한다.

 

각설하고 이 문제를 설명하자면, 이 문제는 배열의 마지막 인덱스부터 시작해야한다.

문제 조건이 앞에 점수보다 뒤에 나오는 점수가 더 크기 때문에

최적의 해란 배열의 마지막번째를 가장 큰 값으로 생각한 뒤, 점차 낮은 레벨의 점수들을 -1씩 깎아내리는 것이다.

 

'알고리즘' 카테고리의 다른 글

파이썬) 폴리오미노 -BOJ  (0) 2023.11.07
파이썬) 컵홀더 - BOJ  (0) 2023.11.07
파이썬) 0 만들기 - BOJ  (0) 2023.11.06
파이썬) 카드게임 - BOJ  (0) 2023.11.06
파이썬) 암호 만들기 - BOJ  (0) 2023.11.06