티스토리 뷰

문제

특정 기간 중 수익이 가장 큰 기간을 찾기

# 테스트
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

 

 

댓글