BOJ 11052. 카드 구매하기
1. 문제설명
- 구매하려는 카드의 개수와 금액이 주어진다.
- 카드의 개수를 맞춰서 살 때 최대 금액을 구하라
- 예제 1
-
Input
4 1 5 6 7
- 4개의 카드팩은 각각 순서대로 1, 5, 6, 7원을 지불해야 한다.
- 1에 해당하는 첫 번째 카드팩은 카드가 한 개
- 5에 해당하는 두 번재 카드팩은 카드가 두 개
- 따라서
5*2 = 10
이 최대 값이 된다.
-
2. 알고리즘 설계
- DP 문제
- 세 개의 카드를 사야한다고 가정해보자.
- 3번 카드를 하나 사는 경우
- 1번, 2번 카드를 하나씩 사는 경우
- 1번을 세번 사는 경우
3. 로직
- 점화식
DP[i] = max(DP[i], DP[i - j] + arr[j])
- 2. 알고리즘 설계 부분에서 언급한 걸 계산할 수 있다.
4. 전체 코드
5. 소감
- 이 문제또한, 금액이 매우 컸다면 자료형을 신경써야 한다.
- 최대 금액이 만원이고,
N
이 1000이므로,int
형을 사용하였다.