[๋ฐฑ์ค] (Swift) 1912๋ฒ - ์ฐ์ํฉ (๊ฐ์ฅ ๊ธฐ์ด์ ์ธ DP ๋ฌธ์ )
๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1912
1912๋ฒ: ์ฐ์ํฉ
์ฒซ์งธ ์ค์ ์ ์ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋ค. ์๋ -1,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
www.acmicpc.net
๐ ๋ฌธ์ ํ์ด ์์ด๋์ด
๊ฐ์ฅ ๊ธฐ์ด์ ์ธ dp๋ฌธ์ ๋ก ์ด๋ฏธ ํ์ด๋ดค๋ ๋ฌธ์ ๋ผ ์ด๋ ต๊ฒ ์๊ฐํ์ง ์์๋ค.
dp ์๋ ํ์ฌ์์น์idx-1 ๊น์ง์ ํฉ๊ณผ ํด๋น arr[idx] ๊ฐ์ ๋น๊ตํด๋ณธ ํ ์ต๋๊ฐ์ ๋ฃ์ด์ค๋ค. ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ฐจ๊ณก์ฐจ๊ณก ๋ํด์ง ๊ฐ์ ํ์ฌ๊ฐ์ ๋ํ๋๊ฒ ๋ ํฐ์ง, ํ์ฌ๊ฐ๋ง ๋ฐ๋ผ๋ณด๋๊ฒ ๋ ํฐ์ง ํ์ธํ๋ ๊ฒ์ด๋ค!
๐ ์ ์ฒด ์์ค์ฝ๋
GitHub - deslog/Algorithm
Contribute to deslog/Algorithm development by creating an account on GitHub.
github.com
let n = Int(String(readLine()!))!
let arr = readLine()!.split(separator: " ").map{ Int(String($0))! }
var dp = Array(repeating: -9999, count: 100001) // ์ต์๊ฐ 0์ผ๋ก ํ๋ฉด ์๋ผ!!!!!
dp[0] = arr[0]
for i in 1..<n {
dp[i] = max(arr[i], arr[i] + dp[i - 1])
}
print(dp.max()!)