새소식

반응형
Algotithms

[백준] 20546 🐜 기적의 매매법 🐜

  • -
728x90
반응형

문제

  • 준현이는 매일 가능한 만큼의 주식을 구매하고,
  • 성민이는 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

  • 백준 구현
반응형

'Algotithms' 카테고리의 다른 글

[백준] 2073 수도배관공사  (1) 2023.10.17
[백준] 20300 서강근육맨  (1) 2023.10.17
[백준] 2758 로또  (0) 2023.10.11
[백준] 3165 5  (1) 2023.10.11
[백준] 20115 에너지 드링크  (0) 2023.10.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.