728x90
https://www.acmicpc.net/problem/2156
๋ฌธ์ ์ ๋์จ ์์ ์ ์ถ๋ ฅ์ ๊ฐ์ง๊ณ 20๋ถ์ ๋ ๊ณ ๋ฏผํด๋ณด๋ ๊ท์น์ ์ฐพ์ ์ ์์๋ค.
๊ธธ์ด๊ฐ n์ธ ์ผ์ฐจ์ ๋ฐฐ์ด wines์๋ ์์ธ์ ์์ ์ ์ฅํ๋ค.
๊ธธ์ด๊ฐ n์ธ ์ผ์ฐจ์ ๋ฐฐ์ด dp์๋ ๋ง์ค ์ ์๋ ํฌ๋์ฃผ์ ์ต๋๊ฐ์ ์ ์ฅํ๋ค.
ํฌ๋์ฃผ ์์ด k๊ฐ ์๋ ๊ฒฝ์ฐ(k>=3) ํฌ๋์ฃผ๋ฅผ ๋ง์ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์๋ ์ค ์ต๋๊ฐ์ด๋ค.
- k๋ฒ์งธ ํฌ๋์ฃผ, k-1๋ฒ์งธ ํฌ๋์ฃผ๋ฅผ ๋ง์๋ ๊ฒฝ์ฐ
- ์ด ๊ฒฝ์ฐ ์ต๋๊ฐ์ k๋ฒ์งธ ํฌ๋์ฃผ ์ + k-1๋ฒ์งธ ํฌ๋์ฃผ ์ + k-3๋ฒ์งธ๊น์ง ๋ง์ ํฌ๋์ฃผ ์ต๋๊ฐ
- ์ฆ, dp[k] = wines[k] + wines[k-1] + dp[k-3]
- k๋ฒ์งธ ํฌ๋์ฃผ, k-2๋ฒ์งธ ํฌ๋์ฃผ๋ฅผ ๋ง์๋ ๊ฒฝ์ฐ
- ์ด ๊ฒฝ์ฐ ์ต๋๊ฐ์ k๋ฒ์งธ ํฌ๋์ฃผ ์ + k-2๋ฒ์งธ๊น์ง ๋ง์ ํฌ๋์ฃผ ์ต๋๊ฐ
- ์ฆ, dp[k] = wines[k] + dp[k-2]
- k๋ฒ์งธ ํฌ๋์ฃผ๋ฅผ ๋ง์์ง ์๋ ๊ฒฝ์ฐ
- ์ด ๊ฒฝ์ฐ ์ต๋๊ฐ์ k-1๋ฒ์งธ๊น์ง ๋ง์ ํฌ๋์ฃผ ์ต๋๊ฐ
- ์ฆ, dp[k] = dp[k-1]
์ฒ์์๋ DP ๋ฐฐ์ด์ 2์ฐจ์์ผ๋ก ์ค์ ํด 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ์ ์ฅํด๊ฐ๋ฉฐ ํ์๋ค.
๋ฐฐ์ด์ด ๋ณต์กํ๋งํผ ๋ฐฐ์ด ์ด๊ธฐํ์ ๊ฐ์ค์ ์ ์๋ชปํ์ฌ ์๊พธ ์ค๋ต ํ์ ์ ๋ฐ์๋ค.
์๊ฐํด๋ณด๋ DP ๋ฐฐ์ด์ ์ผ์ฐจ์์ผ๋ก ์ค์ ํ๊ณ , ์์ 3๊ฐ์ง ๊ฒฝ์ฐ ์ค ์ต๋๊ฐ๋ง ์ ์ฅํ๋ฉด ๋๋ ๊ฒ์ด์๊ธฐ์
DP๋ฐฐ์ด์ ์ผ์ฐจ์์ผ๋ก ๋ฐ๊ฟ ๋ค์ ํ์์ต๋ค.
์ ์ฒด ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
int n = Integer.parseInt(reader.readLine());
int[] wines = new int[n];
for (int i = 0; i < n; i++) {
wines[i] = Integer.parseInt(reader.readLine());
}
if (n <= 2) {
System.out.println(Arrays.stream(wines).sum());
return;
}
int[] dp = new int[n];
dp[0] = wines[0];
dp[1] = wines[0] + wines[1];
dp[2] = Math.max(dp[1], Math.max(wines[0] + wines[2], wines[1] + wines[2]));
for (int i = 3; i < n; i++) {
dp[i] = Math.max(dp[i-1], Math.max(wines[i] + dp[i-2], wines[i] + wines[i-1] + dp[i-3]));
}
System.out.println(dp[n-1]);
} catch (IOException e) {
e.printStackTrace();
}
}
}
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]2573๋ฒ: ๋น์ฐ (0) | 2023.07.28 |
---|---|
[๋ฐฑ์ค]5014๋ฒ: ์คํํธ๋งํฌ (0) | 2023.07.23 |
[๋ฐฑ์ค]11725๋ฒ: ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2023.07.18 |
[๋ฐฑ์ค]1926๋ฒ: ๊ทธ๋ฆผ (0) | 2023.07.16 |
[๋ฐฑ์ค]14940๋ฒ: ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2023.07.03 |