프로그래밍/백준

[알고리즘] 백준 25644 파이썬 - 최대 상승

매 석 2023. 4. 4. 23:41
반응형

 

 

25644번: 최대 상승

미래를 예측하는 능력이 있는 정균이는 앞으로 $N$일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고

www.acmicpc.net

문제

미래를 예측하는 능력이 있는 정균이는 앞으로 일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고 적당한 시점에 팔아서 최대한의 이득을 얻으려고 한다.

ANA 회사의 앞으로 일간의 주가를 a1,a2,..,an 이라고 하자. 정균이가 번째 날에 주식을 사고, 번째 날에 판다면 만큼의 이득을 얻을 수 있다. 정균이는 자금이 넉넉하기 때문에 주가가 아무리 높아도 주식을 살 수 있고, 상황이 여의치 않을 경우 사자마자 바로 팔 수도 있다.

앞으로 일간 ANA 회사의 주가가 주어졌을 때, 정균이가 주식 한 주를 적당한 시점에 사고 적당한 시점에 팔아서 얻을 수 있는 최대 이득은 얼마일까?

 

문제풀이

n=int(input())
rate=list(map(int,input().split()))
#01
max_rate,res=0,0
for i in range(n-1,-1,-1):
	#02
    max_rate=max(max_rate,rate[i])
    res=max(res,max_rate-rate[i])
print(res)

- #01 : 최대가격과 결과값을 초기값 0으로 저장한다.

           참고로 최대가격은 for문을 역으로 순차적으로 돌며 갱신해야 한다.

           EX) 3 2 1일 때 처음 최대가격을 바로 3으로 저장하면 res 값이 2가 된다. 정답은 0

- #02 : for문을 역으로 돌며, max_rate 값과 res 값을 계속해서 갱신해준다.

           최종으로 구한 res값을 출력한다.