
처음에는 리스트의 최댓값을 찾아 그 차이를 더해주면 된다고 생각했는데, 세번째 예시에서 중간에 팔고 다시 산 뒤,파는 경우가 최대 이익이 되는 경우가 있었다.
따라서, 리스트를 반대로 [::-1]부터 순회하여 계산했다.
만약, 최대값보다 크면 값을 갱신해주고, 크지 않은 경우는 물건을 구매하고 판다고 가정하여 total 값에 더해주는 방식으로 했다.
import sys
sys.stdin=open("input.txt")
t=int(input())
for test in range(1,t+1):
n=int(input())
l=list(map(int,input().split()))
mn=0 #최대값
ans=0
for i in l[::-1]:
if mn<i: #최댓값 갱신해줌 ->새로운 최대가 나타남
mn=i
else:
ans+=mn-i #물건을 구매해서 판다고 가정
print('#{} {}'.format(test,ans))