์ ๋ฒ leetCode์์ ํ์๋ Maximum Subarray์ ๋น์ทํ ๋ฌธ์ ์ด๋ค. ๋๋ฌธ์ ๊ธฐ์กด์ ์ตํ๋ ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง ๋ณ์๊ฐ ์กด์ฌํ๋ค. Product๋ ๊ณฑ์ผ๋ก์ ์์์ ์์์ ๊ณฑ์ ์์๊ฐ ๋๊ณ ์์์ ์์๋ฅผ ๊ณฑํ๊ฒ ๋๋ฉด ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋นํ์ฌ ์ต๋ ๊ฐ์ ๊ตฌํด ์ฃผ์ด์ผ ํ๋ค.
์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฒ ๋งํ๋ฉด ํ์ฌ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ์ด๋ ์ด์ ์ด์ ์ด๋ ์ด+ํ์ฌ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ธ ์ด๋ ์ด์ ๋น๊ต๋ผ๊ณ ํ ์ ์๋ค.
class Solution {
func maxProduct(_ nums: [Int]) -> Int {
var num = nums
var maxP = num[0]
var minP = num[0]
var answer = num[0]
for i in 1..<num.count {
let tmpMax = maxP
maxP = max(num[i], maxP * num[i], minP * num[i])
minP = min(num[i], tmpMax * num[i], minP * num[i])
answer = max(maxP, answer)
}
return answer
}
}
์ฒ์์ maxP ๋ฐ๋๋ ๊ฑธ ์๊ฐ ๋ชปํด์ ์กฐ๊ธ ํท๊ฐ๋ ธ๋๋ฐ tmpMax๋ก ๋ฐ์์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ num[0]์ผ๋ก ๋ฐฐ์ด ์ฒซ ์๋ฆฌ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ฐ num.first๊ฐ ํจ์ฌ ์ฝ๋ ๋ณด๊ธฐ ํธํ๊ฑฐ ๊ฐ๋ค.
'๐ Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetCode] 13. 3Sum (์๊ณ ๋ฆฌ์ฆ, ์๋ฆฌ) with Swift (0) | 2020.11.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ with python (feat. hash) (0) | 2020.10.13 |
[leetCode] 53. Maximum Subarray with Swift ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฝ๊ฒ ๊ตฌํ๊ธฐ (0) | 2020.10.06 |
[LeetCode] 217. Contains Duplicate with Swift ๋ฐฐ์ด์์ ๋ฐ๋ณต๋๋ ์ ์ฐพ๊ธฐ (0) | 2020.09.17 |
์ค์ฝ๋น ์ง์ (0) | 2020.08.03 |
๋๊ธ