Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6.
정수가 들어있는 배열 하나가 주어진다.
배열안에 들어있는 정수들 중에서 숫자들의 하위배열이 가장 큰 배열의 합을 리턴하는 문제이다.
풀이법
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length;
int dp ;
dp = nums[0];
int max = dp;
for(int i =1 ; i < n; i++) {
dp = nums[i] +(dp > 0 ? dp : 0);
max = Math.max(max, dp);
}
return max;
}
}
dp 라는 수는 전 하위배열의 합을 저장해주는 변수이다.
dp변수에 하위 배열의 합을 저장해 두었다가 전 배열의 합이 양수이면 더하고 음수이면
전 배열의 값의 합보다 작아지기때문에 dp 를 0으로 계산하여 현재의 수를 dp에 새롭게 저장한다.
큰값을 max 변수에 저장한뒤 비교한다.
'알고리즘 문제풀이' 카테고리의 다른 글
백준 14500 테트로미노 (0) | 2020.09.23 |
---|---|
백준 1149 RGB 거리 (0) | 2020.09.07 |
프로그래머스 JadenCase 문자열 만들기 (0) | 2020.06.25 |
프로그래머스 올바른 괄호 (0) | 2020.06.24 |
백준 1914 하노이의 탑 (0) | 2020.06.23 |
댓글