[백준] 20546. 기적의 매매법 - Python
문제
아이디어
간단한 구현 문제인데 주의할 점이 2가지 있다.
준현이는 주식을 살 수 있는 시점에 바로 해당 주가로 매수한다.
하지만 성민이는 3일 간의 주가를 보고난 후에 매수 또는 매도하기 때문에 다음날 주가로 계산해야 한다.(성민이만 해당)
주식을 매수할 상황(3일 연속 하락)일 때는,다음날 주가 <= 보유한 현금
인지
주식을 매도할 상황(3일 연속 상승)일 때는,보유 주식이 있는지
이 조건들을 따지며 준현이와 성민이의 보유 현금, 보유 주식을 계산하고,
총 자산(현금 + 1월 14일의 주가 × 주식 수
) 크기에 따라 "BNP", "TIMING", "SAMESAME"
을 출력한다.
전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
m = int(input())
stock = list(map(int, input().split()))
a = [m, 0]
for x in stock:
if x <= a[0]:
a[1] += a[0]//x
a[0] -= x*(a[0]//x)
b = [m, 0]
for x, y, z, s in zip(stock, stock[1:], stock[2:], stock[3:]):
if x < y < z and b[1]:
b[0] += s*b[1]
b[1] = 0
elif x > y > z and s <= b[0]:
b[1] += b[0]//s
b[0] -= s*(b[0]//s)
if a[0]+stock[-1]*a[1] == b[0]+stock[-1]*b[1]:
print("SAMESAME")
elif a[0]+stock[-1]*a[1] > b[0]+stock[-1]*b[1]:
print("BNP")
else:
print("TIMING")
This post is licensed under CC BY 4.0 by the author.