[SW Expert] 백만 장자 프로젝트 Python

권희정·2024년 11월 16일

삼성전자

목록 보기
18/20

[SW Expert] 백만 장자 프로젝트 Python

처음에는 리스트의 최댓값을 찾아 그 차이를 더해주면 된다고 생각했는데, 세번째 예시에서 중간에 팔고 다시 산 뒤,파는 경우가 최대 이익이 되는 경우가 있었다.
따라서, 리스트를 반대로 [::-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))

profile
데헷큥

0개의 댓글