Maximum Subarray
์์๋ค์ ํฉ์ด ๊ฐ์ฅ ํฐ Subarray๋ฅผ ๊ตฌํ๋ ๋ฌธ์ .
DP๋ก ํ์๋ค.dp ๋ฐฐ์ด์ ๋ง๋ค์ด์ Subarray์ ํฉ์ ์ ์ฅํ ๊ฑด๋ฐ,
์ด๋, dp[i]์ ์๋ฏธ๋ nums[0]๋ถํฐ nums[i] ๊น์ง์ Subarray ์ค ์ต๋๊ฐ์ด๋ค.์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ ํ์์ ์ธ์ ๋ค.
dp[i] = max(dp[i-1]+nums[i], nums[i])
๋ชจ๋ Loop๋ฅผ ๋๋ด๋ฉด,
dp ๋ฐฐ์ด ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํํ๋ฉด ๋๋ค.
๋ !
class Solution: def maxSubArray(self, nums: [int]) -> int: dp = [nums[0]] for n in nums[1:]: dp.append(max(dp[-1] + n, n)) return max(dp)