Algorithm, boj, 카드 구매하기(11052)
풀이
- 4장을 사고싶다면
- bottomup방법을 사용했다.
- 1장을 살수 있는 최대값 dp[1]
- 2장을 살수 있는 최대값
dp[2] = Math.max(dp[2], card[1]+dp[1]); dp[2] = Math.max(dp[2], card[2]+dp[0]); // card[1]+card[1] or card[2] 중에 큰값을 고른다
- 3장을 살수 있는 최대값 ```java dp[3] = Math.max(dp[3], card[1]+dp[2]); dp[3] = Math.max(dp[3], card[2]+dp[1]); dp[3] = Math.max(dp[3], card[3]+dp[0]);
// 카드1장짜리 + 카드2장을 살수있는 최대값 // 카드2장짜리 + 카드1장을 살수있는 최대값 // 카드3장짜리
```java
package org.baekjoon;
import java.util.Scanner;
public class test11052_dp_buyCard {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] card = new int[num+1];
int[] dp = new int[num+1];
for (int i=1; i<=num; i++)
card[i] = sc.nextInt();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= i; j++) {
dp[i] = Math.max(dp[i], card[j] + dp[i - j]);
}
}
System.out.println(dp[num]);
}
}