[ 문제 ]
https://www.acmicpc.net/problem/20546
20546번: 🐜 기적의 매매법 🐜
1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다.
www.acmicpc.net
[ 난이도 ]
실버 5
[ 필요 개념 ]
그리디
[ 풀이 ]
종현이와 성민이의 현금, 매수 가능 주식 수, 보유 주식 수를 변수에 저장하고, 종현이는 그리디 알고리즘으로, 성민이는 if 문을 이용해 특정 케이스에서만 전량 매수 혹은 매도를 하게끔 유도하였다.
[ 소스코드 ]
seedMoney = int(input())
JHMoney = seedMoney
SHMoney = seedMoney
JHBoughtStockNum = SHBoughtStockNum = 0
inputStockText = input()
stockTextList = inputStockText.split()
stockIntList = [int(item) for item in stockTextList]
# print(stockIntList)
for i in range(14):
# 종현이의 과정
stock = stockIntList[i]
JHAffordableStockNum = JHMoney // stock
JHMoney -= JHAffordableStockNum * stock
JHBoughtStockNum += JHAffordableStockNum
# 성민이의 과정
if i > 1 :
if stockIntList[i-1] - stockIntList[i-2] > 0 and stockIntList[i-2] - stockIntList[i-3] > 0 :
#3일 연속 주가 상승 > 전량 매도
SHMoney += SHBoughtStockNum * stockIntList[i]
SHBoughtStockNum = 0
# print('매도')
# print(str(i+1)+'일')
# print(str(SHBoughtStockNum)+'주')
if stockIntList[i-1] - stockIntList[i-2] < 0 and stockIntList[i-2] - stockIntList[i-3] < 0 :
#3일 연속 주가 하락 > 전량 매수
stock = stockIntList[i]
SHAffordableStockNum = SHMoney // stock
SHMoney -= SHAffordableStockNum * stock
SHBoughtStockNum += SHAffordableStockNum
# print('매수')
# print(str(i+1)+'일')
# print(str(SHAffordableStockNum)+'주')
# print(JHBoughtStockNum*stockIntList[13] + JHMoney)
# print(SHBoughtStockNum*stockIntList[13] + SHMoney)
JHResult = JHBoughtStockNum*stockIntList[13] + JHMoney
SHResult = SHBoughtStockNum*stockIntList[13] + SHMoney
if JHResult > SHResult :
print('BNP')
elif JHResult < SHResult :
print('TIMING')
else :
print('SAMESAME')
'알고리즘' 카테고리의 다른 글
[BOJ / 1913 / Python] 달팽이 (0) | 2023.09.20 |
---|---|
[BOJ / 2578 / Python] 빙고 (0) | 2023.09.20 |
바킹독 알고리즘 0x07강 덱 요약본 (1) | 2023.01.31 |
바킹독 알고리즘 0x06강 큐 요약본 (0) | 2023.01.31 |
바킹독 알고리즘 0x05강 스택 요약본 (0) | 2023.01.30 |
댓글