백준 17939번
https://www.acmicpc.net/problem/17939
문제
후기
최근에 풀었던 '주식' 문제와 사실상 똑같은 문제다.
https://velog.io/@jsbryan/BOJ%EB%B0%B1%EC%A4%8011501-Silver-2-%EC%A3%BC%EC%8B%9D
(주식문제 링크)
Bottom-Up 방식이 아닌 Top-down 형식으로 풀면 굉장히 쉽게 풀리는 문제다.
리스트를 뒤집은 다음, max에 저장된 값보다 큰 값이 나오면 max 값을 갱신하고,
그렇지 않으면 max - i만큼의 값을 result 에 더하면 쉽게 해결할 수 있다.
나의 풀이
import sys
input = sys.stdin.readline
N = int(input())
li = (list(map(int,input().split())))
li.reverse() #뒤집고
max_li = li[0] #최대값 설정
result = 0 #결과값
for i in li: #리스트를 돌면서
if i> max_li: #최대값 갱신
max_li = i
else:
result += (max_li) - i #차이만큼 result에 더한다.
print(result)