문제
https://www.acmicpc.net/problem/20546
20546번: 🐜 기적의 매매법 🐜
1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다.
www.acmicpc.net
풀이
n = int(input())
arr = input().split()
p1_m,p1_j = n,0 # BNP 전략
p2_m,p2_j = n,0 # TIMING 전략
p2_arr = []
arr = list(map(int,arr))
for cost in arr:
# BNP 전략
p1_j += p1_m//cost # 살 수 있는만큼 매수
p1_m = p1_m%cost # 매수하고 남은 돈
# TIMING 전략
p2_arr.append(cost)
if len(p2_arr) >= 4:
if p2_arr[0] > p2_arr[1] > p2_arr[2]: # 3일 연속 하락하면 다음날 가격으로 매수
p2_j += p2_m//cost # 살 수 있는만큼 매수
p2_m = p2_m%cost # 매수하고 남은 돈
elif p2_arr[0] < p2_arr[1] < p2_arr[2]: # 3일 연속 상승하면 다음날 가격으로 매도
p2_m += p2_j*cost # 전량 매도
p2_j = 0
p2_arr.pop(0)
if p1_m + arr[-1]*p1_j > p2_m + arr[-1]*p2_j:
print('BNP')
elif p1_m + arr[-1]*p1_j < p2_m + arr[-1]*p2_j:
print('TIMING')
else:
print('SAMESAME')
p1은 BNP 전략, p2는 TIMING 전략 계산 변수이다.
BNP 전략은 주식을 살 수 있으면 매수하게 하였다.
TIMING 전략은 3일 가격을 비교한 후, 3일연속 하락하면 다음날 가격으로 매수, 3일연속 상승하면 다음날 가격으로 매도하게 하였다.
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #5397 - 키로거 (0) | 2022.03.20 |
---|---|
[Python] 백준 #1325 - 효율적인 해킹 (0) | 2022.03.20 |
[Python] 백준 #1343 - 폴리오미노 (0) | 2022.03.16 |
[Python] 백준 #9184 - 신나는 함수 실행 (0) | 2022.01.19 |
[Python] 백준 #10816 - 숫자 카드 2 (0) | 2022.01.18 |