From 7e17953dea8255826f482a1d789e2bf0ca0612bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=84=8B=E1=85=A7=E1=86=AB=E1=84=89?= =?UTF-8?q?=E1=85=AE?= Date: Fri, 3 Jan 2025 15:40:35 +0900 Subject: [PATCH] maximum subarray --- maximum-subarray/EcoFriendlyAppleSu.kt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 maximum-subarray/EcoFriendlyAppleSu.kt diff --git a/maximum-subarray/EcoFriendlyAppleSu.kt b/maximum-subarray/EcoFriendlyAppleSu.kt new file mode 100644 index 000000000..363842336 --- /dev/null +++ b/maximum-subarray/EcoFriendlyAppleSu.kt @@ -0,0 +1,22 @@ +package leetcode_study + +/* +* 주어진 숫자 배열에서 Subarray가 가장 큰 수를 구하는 문제 +* 시간 복잡도: O(n) +* -> 주어진 배열만큼 계산 +* 공간 복잡도: O(n) +* -> 가중치를 더하는 배열 필요 +* */ +fun maxSubArray(nums: IntArray): Int { + val dp = IntArray(nums.size) + dp[0] = nums[0] + + for (i in 1 until nums.size) { + if (dp[i - 1] + nums[i] >= 0 && dp[i-1] >= 0) { + dp[i] = dp[i - 1] + nums[i] + } else { + dp[i] = nums[i] + } + } + return dp.max() +}