leetCode 53์ ๋ชจ๋ ์์์ ๊ฐ์ ํฉ์ด ์ต๋๊ฐ์ ๊ฐ์ง๋ ์๋ธ ์ด๋ ์ด๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด๋ ์๋ธ ์ด๋ ์ด๋ ์ฐ์์ฑ์ ๊ฐ์ ธ์ผ ํ๋๋ฐ, ์ด ๋ป์ ์ค๊ฐ ์ธ๋ฑ์ค๋ฅผ ๋ฐ์ด ๋์ง ์๊ณ ์ธ๋ฑ์ค ์์๋๋ก ๋์ด ์๋ ์ด๋ ์ด์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์์ ์ต๋๊ฐ๋ค์ ์กฐํฉ๋ง์ ์ฐพ์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ฉฐ ์ด๋ค ์๋ธ ์ด๋ ์ด๊ฐ ๊ฐ์ฅ ์ต๊ณ ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ๊ตฌํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ์ ํฌ์ธํธ ์ ๋๋ค.
์๋ธ ์ด๋ ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์์ ๋ง์ด ์ธ๊ธ๋๋ ์๊ณ ๋ฆฌ์ฆ์ Kadane ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
reference Youtube video here ๐
์ฐ์ ๋ฌธ์ ์์ ์ฃผ์ด์ง [-2, 1, -3, 4, -1, 2, 1, -5, 4]๋ฅผ ๋ด ์๋ค. ์ฌ๊ธฐ์ ์ฒซ๋ฒ์งธ 4๋ฅผ ์ค์ ์ผ๋ก ๋ณด๊ฒ ์ต๋๋ค. ํ์ฌ ์ธ๋ฑ์ค๋ 3์ด๊ณ ๊ทธ ์ธ๋ฑ์ค์ ๊ฐ์ 4์ ๋๋ค. ์ด๋ ์ฌ ์ ์๋ ์๋ธ ์ด๋ ์ด์ ์กฐํฉ์ ๋ด ๋๋ค. [-2, 1, -3] ์ K๋ผ ํ๊ณ [1, -3]์ M์ด๋ผ ํ๊ฒ ์ต๋๋ค. ๊ฐ๊ฐ ์๋ธ ์ด๋ ์ด์ ํฉ์ -4 ๊ทธ๋ฆฌ๊ณ -2์ ๋๋ค. ์ฆ ์ด๋ค ๋ฐฐ์ด์ ์ ์ฒด ์์์ ํฉ์ด ๋ ํฐ๊ฐ ํ๋ฉด K < M ์ธ ๊ฒ์ ๋๋ค. ์ด์ ํ์ฌ ์์๋ฅผ ๊ฐ ์๋ธ ์ด๋ ์ด์ ๋ํด ์ค๋ค๊ณ ํฉ์๋ค.
๊ทธ๋ ๋ค๋ฉด K+[4], M+[4 ]๊ฐ ๋๊ณ ์ด๋ K < M์ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ K+[4] < M+[4]๊ฐ ๋ฉ๋๋ค. ์ด์ ์๋ฌด๋ฐ ๊ฐ๋ ์๋ empty array์ธ []๋ฅผ ์๊ฐํด ๋ด ์๋ค. ๋ฐฐ์ด์ E๋ผ๊ณ ํฉ๋๋ค. ์์ ๊ฐ๋ ๊ณผ ๊ฐ์ด ์๊ฐํ๋ฉด K + [4](ํ์ฌ ์ธ๋ฑ์ค ๊ฐ] < E + [4](ํ์ฌ ์ธ๋ฑ์ค ๊ฐ) ์ด๋ผ ํ๋ค๋ฉด E+[4] ์๋ธ ๋ฐฐ์ด์ด K+[4] ์๋ธ ๋ฐฐ์ด ๋ณด๋ค ํฐ ๊ฒ์ด ๋ฉ๋๋ค(์ด๋ ํฌ๋ค๋ ๊ฒ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ ํฉ์ ๋งํฉ๋๋ค). E๋ ๋น ๋ฐฐ์ด์ด๋ฏ๋ก [4]๊ฐ ์๋ธ ๋ฐฐ์ด ์ค ํฐ ๋ฐฐ์ด์ด ๋๋ ๊ฒ์ด์ฃ .
ํ์ฌ ์ธ๋ฑ์ค ์์ ์์ ์ด์ ์๋ธ ์ด๋ ์ด๋ค๊ณผ ํ์ฌ ์ธ๋ฑ์ค ํฉ์ผ๋ก ๊ตฌํด์ง ๊ฐ๋ณด๋ค ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ(ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ์๋ธ ๋ฐฐ์ด)์ด ๋ ํฌ๋ค๋ฉด ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ ๋ถํฐ ์์ํ๋ ์๋ธ ์ด๋ ์ด๊ฐ ํฐ ๊ฒ์ด ๋ฉ๋๋ค. ๋ฐ๋์ ์ํฉ์ด๋ผ๋ฉด ๊ทธ ๋ฐ๋๋ก ์ด์ ์๋ธ ์ด๋ ์ด + ํ์ฌ ์ด๋ ์ด๊ฐ ์ ์ฒด ์ด๋ ์ด ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง๋ ์๋ธ ์ด๋ ์ด๊ฐ ๋๋ ๊ฒ์ ๋๋ค.
class Solution {
func maxSubArray(_ nums: [Int]) -> Int {
var num = nums
var answer: Int = num[0]
for i in 1..<num.count {
num[i] = max(num[i], num[i]+num[i-1])
answer = max(answer, num[i])
}
return answer
}
}

'๐ Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetCode] 13. 3Sum (์๊ณ ๋ฆฌ์ฆ, ์๋ฆฌ) with Swift (0) | 2020.11.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ with python (feat. hash) (0) | 2020.10.13 |
[leetCode] 152. Maximum Product Subarray ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ๋ณํ (0) | 2020.10.12 |
[LeetCode] 217. Contains Duplicate with Swift ๋ฐฐ์ด์์ ๋ฐ๋ณต๋๋ ์ ์ฐพ๊ธฐ (0) | 2020.09.17 |
์ค์ฝ๋น ์ง์ (0) | 2020.08.03 |
๋๊ธ