삼송전자주식분석.py
def max_profit(stock_list):
# 여기에 코드를 작성하세요
profit_list = []
profit = 0
for i in range(len(stock_list)-1):
profit = max(stock_list[i+1:]) - stock_list[i]
profit_list.append(profit)
return max(profit_list)
##########################################################
# 모범 답안 : 시간복잡도 O(n)
def max_profit(stock_list):
# 현재까지의 최대 수익
max_profit_so_far = stock_list[1] - stock_list[0]
# 현재까지의 최소 주식 가격
min_so_far = min(stock_list[0], stock_list[1])
# 주식 가격을 하나씩 확인한다
for i in range(2, len(stock_list)):
# 현재 파는 것이 좋은지 확인한다
max_profit_so_far = max(max_profit_so_far, stock_list[i] - min_so_far)
# 현재 주식 가격이 최솟값인지 확인한다
min_so_far = min(min_so_far, stock_list[i])
return max_profit_so_far
# 테스트 코드
print(max_profit([7, 1, 5, 3, 6, 4]))
print(max_profit([7, 6, 4, 3, 1]))
print(max_profit([11, 13, 9, 13, 20, 14, 19, 12, 19, 13]))
print(max_profit([12, 4, 11, 18, 17, 19, 1, 19, 14, 13, 7, 15, 10, 1, 3, 6]))
해결과정
이것도 약간 지난번 '투자귀재규식이III'랑 비슷하다고 생각되는데, max나, min을 이용해서 값을 계속 업데이트 하는 로직을 생각해봐야겠다.. 아직 익숙하지 않다...
'Algorithm > 코딩테스트 스터디' 카테고리의 다른 글
1부터 n까지의 합 (0) | 2023.11.03 |
---|---|
출근하는 방법 I (0) | 2023.08.04 |
투자 귀재 규식이 III (0) | 2023.08.01 |
투자 귀재 규식이 II (0) | 2023.08.01 |
중복되는 항목 찾기 I (0) | 2023.08.01 |