Algorithm/Baekjoon
[๋ฐฑ์ค] (Swift) 1912๋ฒ - ์ฐ์ํฉ (dp max ๊ฐ ๊ตฌํ๊ธฐ!)
๊ฐ์ ๐ฅ
2022. 3. 16. 15:55
๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1912
1912๋ฒ: ์ฐ์ํฉ
์ฒซ์งธ ์ค์ ์ ์ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋ค. ์๋ -1,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
www.acmicpc.net
๋ฌธ์ ํ์ด idea
์์์ ํ๋ dp ๋ฌธ์ ์ ๋ค๋ฅผ ๊ฒ ์๋ ๋ฌธ์ ! ์์์๋ถํฐ ๋ํด์ฃผ๊ณ max๊ฐ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ผ. ์๋๋ฉด!! ์ด์ฐจํผ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๋๊ฑฐ๋ผ ๊ณ์ max ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์์ค์ฝ๋
let n = Int(String(readLine()!))!
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
var dp = Array(repeating: -1001, count: 100001)
dp[0] = arr[0]
for i in 1..<n{
dp[i] = max(arr[i],dp[i - 1] + arr[i])
}
print(dp.max()!)
๋ฐ์ํ