11052번: 카드 구매하기
첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)
www.acmicpc.net
문제
카드 n개가 포함된 카드팩 n가지가 존재. 카드가 i개 포함된 카드팩의 가격은 $P_i$원. 이 카드팩 가격을 최대로 해서 n개의 카드를 구매하는 경우를 구하는 문제.
풀이
https://lionontheshore.tistory.com/51
[BOJ/C++]1699번 제곱수의 합
https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있.
lionontheshore.tistory.com
이 문제와 유사하게 풀었음.
내가 틀렸던 부분[런타임 에러]
n을 선언하고, 배열 dp[n]과 p[n]을 선언한 뒤에 n값을 입력받아 런타임에러가 났다. 아주 멍청한 실수..
https://www.acmicpc.net/board/view/22980
글 읽기 - 주로 런타임 에러가 발생하는 이유는 무엇인가요?
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
런타임 에러가 나는 이유. 내가 틀린 이유와 아주 정확. 배열 인덱스를 잘못 참조했을 때 나는 오류이다.
소스코드
#include<iostream>
using namespace std;
int main(void){
int n;cin>>n;
int p[n+1];//카드팩
int dp[n+1];
for(int i=1;i<=n;i++)
cin>>p[i];
dp[1]=p[1];
for(int i=2;i<=n;i++){
dp[i]=p[i];
for(int j=1;j<i;j++){
dp[i]=max(dp[i],dp[i-j]+p[j]);
}
}
cout<<dp[n]<<endl;
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ/python3]2562번 최댓값 (0) | 2021.11.21 |
---|---|
[BOJ/C++]9461번 파도반 수열 (0) | 2020.09.05 |
[BOJ/C++]1699번 제곱수의 합 (0) | 2020.08.18 |
[BOJ/C++]2579번 계단오르기 (0) | 2020.08.18 |
[BOJ/C++]1912번 연속합 (0) | 2020.07.29 |
댓글