백준 #17521 Byte Coin
문제 링크
문제 설명
$n$일 동안의 비트코인 가격을 미리 알 수 있을 때 현재 가진 현금으로 수익을 최대화 하는 문제
코드
import sys
input = sys.stdin.readline
n, W = map(int, input().split())
coin = 0
prices = [int(input()) for _ in range(n)]
# 감소하면 매도
# 증가하면 매수
for i in range(1, n):
prev = prices[i - 1]
cur = prices[i]
if prev < cur:
cnt = W // prev
coin += cnt
W -= prev * cnt
elif prev > cur:
W += prev * coin
coin = 0
W += coin * prices[-1]
print(W)
풀이
전날 대비 오늘 가격이 올랐는지 떨어졌는지만 알면 된다! 전날 대비 떨어졌으면 전날 가격으로 매도하고 전날 대비 상승했으면 전날 가격으로 매수하면 된다. 어차피 가진 현금이 한정적이기 때문에 최저가격에서 매수하게되고 최고 가격에서 매도하게 된다.
예전에 CFA공부할 때 EQUITY 수업에서 강사님이 BLASH
라고 외우라 한적이 있다. BUY LOW AND SELL HIGH
의 약자인데 뭐 당연하면서도 가장 기본적인 원리인것..근데 내일 가격을 어떻게 아냐구 ㅎㅎ
댓글남기기