[백준] 17521번 Byte Coin

거북이·2023년 3월 10일
0

백준[실버4]

목록 보기
81/91
post-thumbnail

💡문제접근

  • 바이트 코인의 가격이 하락세가 유지된다면 바이트 코인을 구매하지 않아야 최종 현금의 최댓값이 나오게 된다.
  • 바이트 코인의 가격이 증가세라면 현재 시점에서 바이트 코인을 사들여 코인을 매수하고 바이트 코인의 가격이 오름차순의 정점을 찍는다면 그 시점에서 코인을 매도하여 수익을 벌어들인다.
  • 바이트 코인의 가격이 하락세의 정점을 찍은 다음 반등하는 경우 하락세의 정점일때 바이트 코인을 사들여 코인을 매수한 다음 코인의 가격이 오름차순의 증가세가 나타나고 오름차순의 정점을 찍는 시점에서 코인을 매도하여 수익을 벌어들이면 된다.

💡코드(메모리 : 31256KB, 시간 : 44ms)

import sys
input = sys.stdin.readline

period_coin_val = []    # 코인의 가치
n, W = map(int, input().strip().split())
for _ in range(n):
    period_coin_val.append(int(input()))

coin_amount = 0		# 코인의 양
for i in range(n-1): 
    if period_coin_val[i] < period_coin_val[i+1]:
        if W // period_coin_val[i] > 0:
            coin_amount += W // period_coin_val[i]
            W -= (coin_amount * period_coin_val[i])
    elif period_coin_val[i] > period_coin_val[i-1] and coin_amount > 0:
        W += (coin_amount * period_coin_val[i])
        coin_amount = 0

# 마지막 날 즉, n일 날 보유하고 있는 모든 코인을 매도해야한다.
if coin_amount > 0:
    W += (coin_amount * period_coin_val[-1])
print(W)

💡소요시간 : 27m

0개의 댓글