반응형

dp 14

백준 12865번: 평범한 배낭(C++)

www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 코드 #include using namespace std; int n, k; // 물품의 개수, 준서가 버틸 수 있는 무게 int product[101][2]; // 물건의 무게와 가치 배열 int dp[101][100001]; int max(int a, int b){ return a >= b ? a : b; } void solve(){ int ..

공부/백준 2021.02.01

백준 9251번: LCS(C++)

www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 코드 #include using namespace std; string a, b, temp; int dp[1001][1001] = {0, }; void init(){ cin >> a >> b; if(a.length() > b.length()){ temp = a; a = b; b = temp; } } int max(int a, int b){ return a > b ? ..

공부/백준 2020.11.28

백준 1912번: 연속합(C++)

www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 #include using namespace std; int n; int arr[100000]; int dp[100000]; void init(){ cin >> n; for(int i=0; i> arr[i]; } } void solve(){ dp[0] = arr[0]; int max_num = dp[0]; for(int i=1; i arr[i] ? dp[i-1] + arr[i] : arr[i]; max_num = d..

공부/백준 2020.11.27

백준 11054번: 가장 긴 바이토닉 부분 수열(C++)

www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 코드 #include using namespace std; int n; int A[1000]; int inc_arr[1000]; int dec_arr[1000]; int len = 0; int max(int a, int b){ return a > b ? a : b; } void init(){ cin >> n; for(int i=0; i> A[i]; } } void solve(){ for(int i=0; i ... SN-1 > SN..

공부/백준 2020.11.25

백준 11053번: 가장 긴 증가하는 부분 수열(C++)

www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 #include using namespace std; int n; // 수열 A의 크기. int arr[1000]; // 수열 A를 이루고 있는 Ai. int dp[1000]; // Ai를 마지막 수로 갖는 수열 중 가장 긴 길이. int max_len = 1; // 가장 긴 수열의 길이. int max(int a, int b)..

공부/백준 2020.11.24

백준 2156번: 포도주 시식(C++)

www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 코드 #include using namespace std; int n; int wine[10001]; int dp[10001]; int max(int a, int b){ return a > b ? a : b; } void init(){ cin >> n; for(int i=1; i> wine[i]; } } void solve(){ dp[1] = wine[1]; dp[2] = wine[1] + wine[2]; dp[..

공부/백준 2020.11.23
반응형