728x90
투자 귀재 규식이3
이미 sublist_max 함수를 각각 Brute Force과 Divide and Conquer 방식으로 작성했는데요. Brute Force로 풀었을 때는 시간 복잡도가 O(n2), Divide and Conquer를 사용했을 때는 O(nlgn)였습니다.
이에는 시간 복잡도를 O(n)로 한 번 더 단축해보세요!
❧ 테스트 셋
def sublist_max(profits):
# Code
# Test
print(sublist_max([7, -3, 4, -8]))
print(sublist_max([-2, -3, 4, -1, -2, 1, 5, -3, -1]))
❧ 출력 예시
8
7
❧ 정답
def sublist_max(profits):
# max_profit_so_far : 현재 인덱스 이전까지의 최대 수익(부분 문제)
max_profit_so_far = profits[0]
'''
max_check : 현재 인덱스를 포함하여 나올 수 있는 최대 수익
max 함수를 이용해, 이전 max_check 값과 현재 인덱스 값을 비교
'''
max_check = max(profits[0]+profits[1], profits[1])
for i in range(2, len(profits)):
max_profit_so_far = max(max_profit_so_far, max_check)
max_check = max(max_check + profits[i], profits[i])
max_profit_so_far = max(max_profit_so_far, max_check)
return max_profit_so_far
print(sublist_max([7, -3, 4, -8]))
print(sublist_max([-2, -3, 4, -1, -2, 1, 5, -3, -1]))
1️⃣ 시간 복잡도 : O(logn)
2️⃣ 이전 Divide and Conquer 방법, Brute Force 방법보다 효율적
728x90
'📊 Algorithm > Algorithm PS' 카테고리의 다른 글
[알고리즘 일기] 40. 출근하는 방법1 (0) | 2021.06.10 |
---|---|
[알고리즘 일기] 39. 삼송전자 주식 분석 (0) | 2021.06.08 |
[알고리즘 일기] 37. 투자 귀재 규식이2 (0) | 2021.06.06 |
[알고리즘 일기] 36. 중복되는 항목 찾기 (0) | 2021.06.05 |
[알고리즘 일기] 35. 빠르게 산 오르기 (0) | 2021.06.04 |