[LeetCode] 53. Maximum Subarray

bin1225·2022년 12월 8일
0

Algorithm

목록 보기
5/43

시험기간인데, 발등에 불을 끄느라 최근에 문제를 거의 못 풀었다.
알고리즘 공부하다가 Maximum Subarray 내용을 배웠고 똑같은 문제가 있길래 풀어보았다.

내가 푼 방법은 배열을 탐색하면서 해당지점의 값을 A[i], i이전까지 더한 값을 sum 을 이용하여
i번째 수를 더한 상황, i번째에서 새로 시작하는 상황을 비교한다.
즉 sum+A[i] 와 A[i]를 비교하여 더 큰 값으로 최신화 시킨다.

prefixSum과 prefixMin을 이용해 푸는 방법도 있는데, 이건 코드가 어디서 틀렸는지 방법은 아는데 답을 빨리 못내서 보류했다.

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        
        int max = -1000000000, answer = -1000000000;
        for(int i=0; i<nums.size(); i++){
            if(nums[i]+max > nums[i]){
                max = nums[i]+max;
            }
            else{
                max = nums[i];
            }

            if(answer<max){
                answer = max;
            }
            
        }
        return answer;
    }
};

2개의 댓글

comment-user-thumbnail
2022년 12월 9일

이렇게 실패한 과정도 다 작성하는거 진짜 좋은거 같다 ㅎㅎ

1개의 답글