차곡차곡

[BOJ/Python] 백준 11501번 - 주식 본문

CS/Algorithm

[BOJ/Python] 백준 11501번 - 주식

sohy 2022. 5. 12. 02:57

백준 #11501 주식

 

11501번: 주식

입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타

www.acmicpc.net

import sys
input = sys.stdin.readline

def get_profit(n, price):
    profit = 0      # 최대 이익
    max_price = price[-1]
    for i in range(n-2, -1, -1):
        if max_price < price[i]:
            max_price = price[i]
        else:
            profit += max_price - price[i]
    print(profit)

t = int(input())   # 테스트케이스 개수
for _ in range(t):
    n = int(input())   # 날의 수
    price = list(map(int, input().split()))   # 날 별 주가
    get_profit(n, price)
  1. 현재 시점을 기준으로 그 이후에 주가가 가장 높은 날 주식을 팔아야 최대 이익을 남길 수 있다.
  2. 따라서 for문을 거꾸로 돌며 현재 주가가 가장 높은 주가인지 판별하다.
  3. 현재 주가가 할당되어 있던 최대 주가보다 클 경우 현재 주가로 갱신해준다.
  4. 작다면 해당 주가을 최대 주가에서 빼서 최대 이익을 남긴다.

Comments