๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/2156
๋์ ํ์ด
๋จผ์ ๊ท์น์ ์ฐพ๋๋ฐ ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ ท๋ค. ๊ณผ์ฐ ์ด๋ ๊ฒ ํธ๋๊ฒ ์์๊บผ๊ฐ ์ธ๊ฐ ๋ฐ๋ณต๋์ง ์๊ณ ๊ตฌํ๋๊ฒ ๋ง๋? ์ถ์๋ ์์ฌ์ด ๋ค์์๋ค. ํ์ง๋ง ์ ํ์์ ์์ฑํ๋ฉด์, ๋๋ฒ ์ฐ์ ๋์จ๊ฑด ์ ์ธํ๊ณ ์ ํ์์ ์ธ์์ฃผ๋ฉด ๋๋ ๊ฑฐ์๋ค. (์ด๊ฒ๋ฌด์จ๋ง์ด์ง,, ๋ง๋กํํ์ด ์๋๋ค ใ ใ ) ์ด์จ๋ ํ์ด๋ ์๋์ ๊ฐ๋ค.
์์๋ก ์ค๊ฒ ์ฒ๋ผ, ํฌ๋์ฃผ๊ฐ 6๊ฐ ์ฃผ์ด์ก๋ฐ๋ฉด, ์์ ๊ฐ์ด ๊ตฌํ ์ ์๋ค. ์ต๋๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ณด๊ณ ์๋์ ๊ฐ์ ์ ํ์์ ๊ตฌํ ์ ์๋ค. dp๋ ์ต๋๋ก ๊ฐ์ง ์ ์๋ ๊ฐ (ํ์์ 4ํ)์ ๋ฃ์ด์ค ๋ฐฐ์ด์ด๋ค.
dp[5] ๋ ์์ ๊ฒฝ์ฐ์ ์์์ ์ต๋ ๊ฐ์ ๊ตฌํด ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. ์ด๊ฒ์ max() ํจ์๋ฅผ ํ์ฉํ์ฌ ๊ตฌํด์ฃผ๋ฉด ์๋์ ๊ฐ๋ค.
์์ค ์ฝ๋ - ๋ง์์ต๋๋ค!
- n ์ ์ ๋ ฅ๋ฐ์ ํฌ๋์ฃผ์ ๊ฐ์
- podoju ๋ ์ ๋ ฅ๋ฐ์ ํฌ๋์ฃผ์ ์
- dp ๋ podoju[i] i ๋ฒ์งธ ํฌ๋์ฃผ๊น์ง ๋ง์ จ์๋์ ์ต๋ ๊ฐ์ ๋ฃ์ด์ค ๋ฐฐ์ด
- n>1, n>2 ์กฐ๊ฑด์ ๊ผญ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค. ๋ง์ฝ n=1 ์ด๋ผ๋ฉด, n>2 ์์์๋ ์ ํ์์ ํต๊ณผํ ํ์๋ ์๊ณ , range of index ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
let n = Int(readLine()!)!
var podoju: [Int] = []
var dp = Array(repeating: 0, count: n+1)
podoju.append(0)
for _ in 1...n {
podoju.append(Int(readLine()!)!)
}
dp[1] = podoju[1]
if n > 1 {
dp[2] = podoju[2]+podoju[1]
}
if n > 2{
for i in 3..<n+1 {
dp[i] = max(dp[i-1], dp[i-3] + podoju[i-1] + podoju[i], dp[i-2] + podoju[i])
}
}
print(dp[n])
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 1748๋ฒ - ์ ์ด์ด์ฐ๊ธฐ 1 (0) | 2022.04.20 |
---|---|
[๋ฐฑ์ค] (Swift) 3085๋ฒ - ์ฌํ๊ฒ์ (์ค๋ต๋ ธํธๅฟ ) (0) | 2022.04.15 |
[๋ฐฑ์ค] (Swift) 9465๋ฒ - ์คํฐ์ปค (dp ํ์ด) (0) | 2022.03.25 |
[๋ฐฑ์ค] (Swift) 11057๋ฒ - ์ค๋ฅด๋ง ์ (dp, 3์ค for๋ฌธ ์ฌ์ฉ) (0) | 2022.03.25 |
[๋ฐฑ์ค] (Swift) 1309๋ฒ - ๋๋ฌผ์ (0) | 2022.03.21 |