알고리즘 스터디/Python

[LeetCode] 1800. Maximum Ascending Subarray Sum

hkl22 2024. 9. 9. 11:41

1800. Maximum Ascending Subarray Sum

LeetCode

https://leetcode.com/problems/maximum-ascending-subarray-sum/

문제

  • 양의 정수 배열 nums가 주어졌습니다.
  • 부분 배열은 nums 내의 연속된 요소를 의미하며 길이가 1인 배열도 오름차순 부분 배열로 간주합니다.
  • 오름차순으로 정렬된 부분 배열의 요소 합 중 최댓값을 반환하는 코드를 작성하세요.

예제

  • Input: nums = [10, 20, 30, 5, 10, 50]
  • Output: 65

풀이 과정

  • 주어진 양의 정수 배열 nums의 첫 번째 요소를 변수 answer와 sum_에 각각 저장합니다.
  • 인덱스 i를 사용하여 nums의 두 번째 요소부터 순회하며 다음 조건을 수행합니다.
    • 현재 요소(nums[i])가 이전 요소(nums[i-1])보다 크면 sum_에 현재 요소를 더해줍니다.
    • 그렇지 않으면 sum_을 현재 요소로 수정합니다.
    • answer를 answer와 sum_ 중 큰 값으로 수정합니다.
  • 최종적으로 오름차순 정렬된 부분 배열의 요소 합 중 최댓값을 담은 answer를 반환합니다.

코드(Python)

class Solution:
    def maxAscendingSum(self, nums: List[int]) -> int:
        answer = nums[0]
        sum_ = nums[0]
        for i in range(1, len(nums)):
            if nums[i-1] < nums[i]:
                sum_ += nums[i]
            else:
                sum_ = nums[i]
            answer = max(answer, sum_)
        return answer

참고

  • max(객체) : 주어진 객체 중 가장 큰 값 반환