링크 : https://www.acmicpc.net/problem/20546
- 문제
- 소요시간: 74분 9초(코드 구현 24분, 디버깅 50분), 재코딩 10분





- 설계하기(접근방법)
1. 현금을 입력받는다.
2. 날짜별 주가 리스트를 입력받는다.
3. 준현의 경우 돈이 바닥날때까지 매수한다
4. 성민의 경우 3일연속 상승하는지, 하락하는지 검사를 하고
상승 : 자산에 매도한 주식 수 * 현재 주가 더한다.
하락 : 주식 수 += 가진 자산으로 전부 매수, 남은 자산 = 매도하고 남은 나머지
5. 각각 자산을 비교하여 결과를 출력한다.
- 코드(출력)
def junhyun(m, price_list):
stock = 0
for i in price_list:
stock += m // i
m %= i
m += stock * price_list[13]
return m
# def sungmin(m, price_list):
# stock = 0 # 주식개수
# cnt = [0, 0] # 0번째 index는 몇일 연속인지, 1번째 index는 상승인지 하강인지
# tmp = price_list[0]
# for i in range(0, len(price_list)):
# if price_list[i] > tmp: # 전날보다 높을 때
# if cnt[1] == 1: # 전날도 상승장
# cnt[0] += 1 # 연속 상승 일수 + 1
# else: # 상승장이 아니었을 때
# cnt[0] = 1 # 연속 상승 일수 = 1일차
# cnt[1] = 1 # 상승장
# elif price_list[i] == tmp: # 전날하고 동일할 때
# cnt[0] = 0 # 초기화
# cnt[1] = 0 # 초기화
# else: # 전날보다 낮을 때
# if cnt[1] == -1: # 전날도 하락장
# cnt[0] -= 1 # 연속 하락 일수 - 1
# else: # 하락장이 아니었을 때
# cnt[0] = -1 # 연속 하락 일수 1일차
# cnt[1] = -1 # 하락장
# if (cnt[0] >= 3): # 3일 연속 상승장일 때
# m += price_list[i] * stock # 매도하고 남은 돈
# stock = 0 # 0주
# if (-3 >= cnt[0]): # 3일 연속 하락장일 때
# stock += m // price_list[i] # 매수
# m %= price_list[i] # 매수하고 남은 돈
# tmp = price_list[i]
# m += stock * price_list[13] # 마지막날 주가
# return m
def sungmin(m, price_list):
stock = 0
for i in range(len(price_list) - 4):
if price_list[i] > price_list[i+1] > price_list[i+2] > price_list[i+3]: # 3일연속 감소한다면
stock += m // price_list[i+3]
m %= price_list[i+3]
if price_list[i] < price_list[i + 1] < price_list[i+2] < price_list[i+3]: # 3인 연속 상승한다면
m += price_list[i+3] * stock
stock = 0
m += price_list[-1] * stock
return m
m = int(input()) # 돈
price_list = list(map(int, input().split())) # 14일치 주가
m_j = junhyun(m, price_list)
m_s = sungmin(m, price_list)
if (m_j > m_s):
print("BNP")
elif m_j < m_s:
print("TIMING")
else:
print("SAMESAME")
- 얻어갈 부분
1. 코드를 짜는 거는 오래걸리지 않았지만 디버깅에서 너무 많은 시간이 걸렸다.
2. 앞으로 for문을 순회할때, 순회하는 것이 i인지 아니면 리스트인지 정확하게 생각하며 코딩하자
3. 코딩이 지나치게 복잡해지면 간단하게 생각하자(주의)
'알고리즘(백준) > 구현' 카테고리의 다른 글
| [알고리즘/구현] 1924 번 : 2007년 - python (0) | 2023.02.27 |
|---|---|
| [알고리즘/구현] 10870번 : 피보나치 수열 - python (0) | 2023.02.27 |
| [알고리즘/구현] 7568번 : 덩치 - python (0) | 2023.02.26 |
| [알고리즘/구현] 21918 번 : 전구 - python (0) | 2023.02.24 |
| [알고리즘/구현] 10817번 : 세 수 - python (0) | 2023.02.19 |