https://www.acmicpc.net/problem/2579
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int stairs = Integer.parseInt(bf.readLine());
int[] arr = new int[stairs+1];
int[] dp = new int[stairs+1];
for(int i=1; i<=stairs; i++)
arr[i] = Integer.parseInt(bf.readLine());
dp[1] = arr[1]; // ์ฒซ ๋ฒ์งธ ๊ณ๋จ -> arr[1]์ด ์ต๋
dp[2] = arr[1] + arr[2];// ๋ ๋ฒ์งธ ๊ณ๋จ -> ์ฒซ๋ฒ์งธ + ๋๋ฒ์งธ ๊ณ๋จ ํฉ์ด ์ต๋
for(int i=3; i<=stairs; i++) {
dp[i] = Math.max(dp[i-3] + arr[i-1] + arr[i], dp[i-2] + arr[i]);
}
System.out.println(dp[stairs]);
bf.close();
}
}
ํ์ด
์ ํ์ ์ธ DP(๋์ ๊ณํ๋ฒ)๋ฌธ์ ๋ค !
DP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ณต์ผ๋ก ์ฌ๋ฌ๋ฒ ๊ณ์ฐํ๋ ๊ฒ์ ๋ง๊ธฐ์ํด์ ๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ท์น์ ์ฐพ์์ผ ํ๋ค. ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ณ๋จ์ ํ ๋ฒ์ ํ ๊ณ๋จ์ฉ ๋๋ ๋ ๊ณ๋จ์ฉ ์ค๋ฅผ ์ ์๋ค. ์ฆ, ํ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด์ ์ด์ด์ ๋ค์ ๊ณ๋จ์ด๋, ๋ค์ ๋ค์ ๊ณ๋จ์ผ๋ก ์ค๋ฅผ ์ ์๋ค.
- ์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ชจ๋ ๋ฐ์์๋ ์ ๋๋ค. ๋จ, ์์์ ์ ๊ณ๋จ์ ํฌํจ๋์ง ์๋๋ค.
- ๋ง์ง๋ง ๋์ฐฉ ๊ณ๋จ์ ๋ฐ๋์ ๋ฐ์์ผ ํ๋ค.
์์ ๊ฐ๋ค.
์ฒซ ๋ฒ์งธ๋ ํ ๊ณ๋จ or ๋ ๊ณ๋จ๋ง ์ค๋ฅผ ์ ์๋ ์กฐ๊ฑด์ด๊ณ ,
๋ ๋ฒ์งธ๋ ์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ชจ๋ ๋ฐ์ผ๋ฉด ์๋๋ค -> ์ฒซ๋ฒ์งธ, ๋๋ฒ์งธ, ์ธ๋ฒ์งธ... ์ฐ์์ผ๋ก ์ธ ๊ณ๋จ์ ๋ฐ์ ์ ์๋ค.
์ธ ๋ฒ์งธ๋ ๋ง์ง๋ง ๊ณ๋จ์ ๋ฌด์กฐ๊ฑด ๋ฐ์์ผ ํ๋ค๋ ๋ป์ด๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง๋๋ก ๊ณ๋จ์ด ์ฌ์ฏ ๋ฒ์งธ๊น์ง ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, ์ด๋ป๊ฒ ์ค๋ฅด๋๊ฒ ์ต๋๊ฐ์ธ์ง ์๊ฐํด๋ณด๋ฉด,
๊ณ๋จ์ด ํ ๊ฐ ์ผ๋ => ํ ๊ณ๋จ์ด ์ต๋๊ฐ์ด๋ค. dp[1] = arr[1]
๊ณ๋จ์ด ๋ ๊ฐ ์ผ๋ => ํ ๊ณ๋จ + ๋ ๊ณ๋จ์ด ์ต๋๊ฐ์ด๋ค. dp[2] = arr[1] + arr[2]
๊ณ๋จ์ด ์ธ ๊ฐ ์ด์์ผ๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด,
* ์ผ๋จ ๋ง์ง๋ง ์ฌ์ฏ ๋ฒ์งธ ๊ณ๋จ์ ๋ฌด์กฐ๊ฑด ๋ฐ์์ผ ํ๋ค.
* ์ฌ์ฏ ๋ฒ์งธ ๊ณ๋จ ์ด์ ์ ์๊ฐํด๋ณด๋ฉด, ๋ ๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
* 1) ๋ง์ฝ ์ฌ์ฏ ๋ฒ์งธ ์ด์ ๋ค์ฏ ๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์์ ๊ฒฝ์ฐ์๋ ๋ค ๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์ ์ ์๋ค.
* ๋ฐ๋ผ์ ์ธ ๋ฒ์งธ ๊ณ๋จ๊น์ง์ ์ต๋๊ฐ + ๋ค์ฏ ๋ฒ์งธ ๊ณ๋จ + ์ฌ์ฏ ๋ฒ์งธ ๊ณ๋จ์ด ์ต๋๊ฐ์ด ๋๋ค.
* 2) ๋ง์ฝ ์ฌ์ฏ ๋ฒ์งธ ์ด์ ์ ๋ค ๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์์ ๊ฒฝ์ฐ์๋ ๋ค์ฏ ๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์ ์ ์๋ค.(by ์กฐ๊ฑด2)
* ๋ฐ๋ผ์ ๋ค ๋ฒ์งธ ๊ณ๋จ๊น์ง์ ์ต๋๊ฐ + ์ฌ์ฏ ๋ฒ์งธ ๊ณ๋จ์ด ์ต๋๊ฐ์ด ๋๋ค.
์์ ๊ท์น์ ๊ธฐ์ค์ผ๋ก ์ ํ์์ ์ธ์๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
์ 1)์ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
dp[3] + arr[5] + arr[6]
-> dp[n-3] + arr[n-1] + arr[n]
์ 2)์ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
dp[4] + arr[6]
-> dp[n-2] + arr[n]
์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ ์ ์ค์ ์ต๋๊ฐ์ ์ฐพ์์ฃผ๋ฉด n๋ฒ์งธ ๊ณ๋จ์์์ ์ต๋๊ฐ์ ์ฐพ์ ์ ์๋ค.
DP ์์ธํ ํ์ด ์ฐธ๊ณ
https://sundries-in-myidea.tistory.com/22
์ด๊ฑฐ์ ์ด๋ฑ๋ถ ๋ฌธ์ ,,,,,,,,,,,,,
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1592๋ฒ: ์์์ด์ ์น๊ตฌ๋ค(๊ตฌํ, ์ํ, ์๋ฎฌ๋ ์ด์ ) (0) | 2020.02.21 |
---|---|
[Codeforces] 935A: Fafa and his Company(brute force) (0) | 2020.02.21 |
[Codeforces] 1097A: Gennady and a Card Game(brute force) (0) | 2020.02.21 |
[๋ฐฑ์ค] 1932๋ฒ: ์ ์ ์ผ๊ฐํ(DP, ๋์ ๊ณํ๋ฒ) (0) | 2020.02.20 |
[๋ฐฑ์ค] 15652๋ฒ: N๊ณผ M (4) (dfs, ์ค๋ณตํฌํจ, ๋น๋ด๋ฆผ์ฐจ์) (0) | 2020.02.20 |
๋๊ธ