Algorithm
[1-1][Brute Force] 투자귀재 규식이1
lluna
2021. 10. 12. 11:00
문제
특정 기간 중 수익이 가장 큰 기간을 찾기
# 테스트
print(sublist_max([4, 3, 8, -2, -5, -3, -5, -3]))
print(sublist_max([2, 3, 1, -1, -2, 5, -1, -1]))
print(sublist_max([7, -3, 14, -8, -5, 6, 8, -5, -4, 10, -1, 8]))
내 풀이
- 모든 경우의 수를 리스트에 추가해서 최댓값을 구함
def sublist_max(profits):
profit_list = []
for i in range(len(profits)):
for j in range(i, len(profits)):
profit_list.append(sum(profits[i:j+1]))
return max(profit_list)
다른 풀이
- 최대수익을 첫 번째 값으로 설정하고
- total 변수를 만들어서 (시작 인덱스 바뀔 때마다 기간의 시작이 바뀌는 거니까, i for문 다음에 리셋)
- 동일 i 일때 (시작 인덱스가 동일할 때) total에 추가하면서 i부터 j까지의 합이 최대 수익이라면, max_profit 업데이트
def sublist_max(profits):
max_profit = profits[0] # 최대 수익
for i in range(len(profits)):
# 인덱스 i부터 j까지 수익의 합을 보관하는 변수
total = 0
for j in range(i, len(profits)):
# i 부터 j 까지 수익의 합을 계산
total += profits[j]
# i 부터 j 까지 수익의 합이 최대 수익이라면, max_profit 업데이트
max_profit = max(max_profit, total)
return max_profit