[LeetCode-DP] Maximum Subarray

CHOI YUN HOยท2021๋…„ 8์›” 2์ผ
0

๐Ÿ“ƒ ๋ฌธ์ œ ์„ค๋ช…

Maximum Subarray

[๋ฌธ์ œ ์ถœ์ฒ˜ : LeetCode]

๐Ÿ‘จโ€๐Ÿ’ป ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์›์†Œ๋“ค์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ 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)
profile
๊ฐ€์žฌ๊ฐ™์€ ์‚ฌ๋žŒ

0๊ฐœ์˜ ๋Œ“๊ธ€