문제
- 준현이는 매일 가능한 만큼의 주식을 구매하고,
- 성민이는 3가지 룰에 따라 매매한다.
1. 모든 거래는 전량 매수와 전량 매도로 이루어진다
2. 3일 연속 가격이 전일 대비 상승하면 다음날 무조건 하락한다고 가정한다. 따라서 3일째에는 전량 매도한다.
3. 3일 연속 가격이 전일 대비 하락하면 다음날 무조건 상승한다고 가정한다. 따라서 3일째에는 전량 매수한다.
- 1일부터 14일까지의 주가가 주어질 때, 더 수익률이 높은 사람은?
- 수익률 = 현금 + 1월 14일의 주가 x 주식 수
풀이
- 주가를 하나씩 확인하면서 준현이와 성민이의 매매 방법대로 현금과 주식 수를 수정하면 된다.
- coin : 현금
stock: 주식 개수
ud : up 또는 down 연속 일수
coin = int(input())
price = list(map(int, input().split()))
jh = dict({"coin": coin % price[0], "stock": coin // price[0]})
sm = dict({"coin": coin, "stock": 0, "ud": 0})
for i, p in enumerate(price[1:]) :
# 준현이 매수
if jh["coin"] >= p :
jh["stock"] += jh["coin"] // p
jh["coin"] = jh["coin"] % p
# 성민이 주가 상승/하락 확인
if price[i] < p :
if sm["ud"] > 0 : sm["ud"] += 1
else : sm["ud"] = 1
elif price[i] == p :
sm["ud"] = 0
else :
if sm["ud"] < 0 : sm["ud"] -=1
else : sm["ud"] = -1
# 성민이 매도 또는 매수
if sm["ud"] >= 3 : # 전량 매도
sm["coin"] += sm["stock"] * p
sm["stock"] = 0
elif sm["ud"] <= -3 : # 전량 매수
sm["stock"] += sm["coin"] // p
sm["coin"] = sm["coin"] % p
bnp = jh["coin"] + jh["stock"] * price[-1]
tim = sm["coin"] + sm["stock"] * price[-1]
if bnp > tim : print("BNP")
elif bnp == tim : print("SAMESAME")
else :
print("TIMING")
print(bnp, tim)
References