본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 20546번 🐜 기적의 매매법 🐜(python)

by 윤무무 2023. 4. 13.

https://www.acmicpc.net/problem/20546

 

20546번: 🐜 기적의 매매법 🐜

1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다.

www.acmicpc.net

 

1. 난이도 실버 5

 

 

2. 내가 작성한 코드
import sys

input = sys.stdin.readline

n = int(input().rstrip()) #주어진 돈

chart = list(map(int, input().rstrip().split())) #주식 정보

BNP = [n, 0] #준현 돈, 주식 수
TIMING = [n, 0] #상민 돈, 주식 수

for i in range(len(chart)): #준현
    BNP[1] += (BNP[0] // chart[i]) #살 수 있는 만큼 사기 
    BNP[0] -= (BNP[0] // chart[i] * chart[i]) #주식 사고 남은 돈


for i in range(11): #성민
    check = chart[i:i+4]
    check_up = 0
    check_down = 0

    for j in range(3):
        if check[j+1] > check[j]: #상승 체크
            check_up+=1
        if check[j+1] < check[j]: #하락 체크
            check_down+=1

    if check_down == 3: #3일 연속 상승이면 전량매수
        TIMING[1] += (TIMING[0] // chart[i+3]) 
        TIMING[0] -= (TIMING[0] // chart[i+3] * chart[i+3])

    elif check_up == 3: #3일 연속 하락이면 전량매도
        TIMING[0] += (TIMING[1] * chart[i+3])
        TIMING[1] = 0

BNP = chart[13] * BNP[1] + BNP[0] #준현 총 금액
TIMING = chart[13] * TIMING[1] + TIMING[0] #성민 총 금액

if BNP>TIMING:
    print("BNP")
elif BNP < TIMING:
    print("TIMING")
else:
    print("SAMESAME")

 

댓글