https://www.acmicpc.net/problem/20546
n = int(input())
day = list(map(int, input().split()))
jun_m = n
jun_c = 0
sung_m = n
sung_c = 0
arr = []
for i in day:
jun_c += jun_m // i #주식수
jun_m = jun_m % i #현금
arr.append(i)
if len(arr) >= 4:
if arr[0] > arr[1] > arr[2]: #매수
sung_c += sung_m // i
sung_m = sung_m % i
elif arr[0] > arr[1] > arr[2]: #매도
sung_m += sung_c * i
sung_c = 0
arr.pop(0)
if jun_m + jun_c*day[-1] > sung_m + sung_c * day[-1]:
print('BNP')
elif jun_m + jun_c*day[-1] < sung_m + sung_c * day[-1]:
print('TIMING')
else:
print('SAMESAME')
준현
주식수를 계산할 때 꼭 +=
을 해 주어야 한다.
이유는 갖고있는 현금보다 가격이 큰 경우 0을 더해주면 다음으로 넘어갈 수 있기 때문이다.
성민이의 경우 arr
리스트를 따로 만들어 주어 3번연속 상승 또는 하락을 확인할 수 있게 해 주었다.
구현 문제가 다른 알고리즘에 비해 푸는 시간이 오래 걸리고 어렵게 느껴질 때가 많은데 더 많은 문제를 꾸준히 풀어 봐야 실력이 늘 것 같다.