본문 바로가기

dp16

[백준 9251] 알고리즘 111일차 : LCS https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net C++ DP 최장 공통 부분 수열 두 문자열 ACAYKP CAPCAK가 있으면 공통된 부분수열의 최장길이를 출력하는 문제 ACAYKP CAPCAK의 경우 ACAYKP CAPCAK 로 ACAK이므로 4이다. 접근방법 부분수열이 양 문자열에서 시작하는 위치도 끝나는 위치도 문자열의 처음부터 끝부분까지 고려되어야 하기 때문에 2차원배열을 사용하여 DP로 풀어.. 2021. 7. 28.
[백준 11066] 알고리즘 94일차 : 파일 합치기 https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 동적계획법 핵심 로직 dp[i][j] = dp[i][mid]+dp[mid+1][j] + 누적합(최상위 노드값) 3중 for문을 도는데 첫번째 반복문은 gap 그러니까 범위다 start~end 범위 크기를 1부터 chapter수인 K-1개까지 반복한다. (그럼 마지막 반복문을 돌면 0~K-1까지를 구할 수 있음) 두번째 반복문은 start~end범위 내에서 start의 위치를 한칸씩 뒤로 .. 2021. 6. 28.
[백준 12865] 알고리즘 53일차 : 평범한 배낭 https://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 동적계획법 C++ 2020 하계 방학 알고리즘 스터디의 마지막을 장식할 DP 문제 knapsack 문제다!!! 문제는 설명하기 입아프니 위 사진을 참고하도록 하시고 이번 여름방학 스터디 마지막 문제로 knapsack 문제를 정석으로 코드를 짜보려고 이 문제를 골랐다. 접근방법 상향식 접근, 최적의 원리 등의 접근으로 풀이하는 대표적.. 2020. 8. 28.
[백준 11057] 알고리즘 52일차 : 오르막 수 https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수� www.acmicpc.net 동적계획법 C++ 오르막수 구하기 문제 접근 방법 자리수 별로 오르막수를 저장하는 배열을 사용한다. 소스코드 #include using namespace std; int main(){ int n; cin >> n; int dp[1000][10]={0}; for(int i = 0 ; i < 10 ; i++) dp[0][i] = 1; for(int i = 1 ; .. 2020. 8. 27.
[백준 11054] 알고리즘 51일차 : 가장 긴 바이토닉 부분 수열 https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 동적계획법 C++ 가장 긴 바이토닉 부분 수열 문제 접근 방법 가장 긴 증가하는 부분 수열과 가장 긴 감소하는 부분 수열이 중첩된 문제 0부터 i 까지의 가장 긴 증가하는 부분 수열을 구하고, i 부터 n까지 감소하는 부분 수열을 구하여 합한 값으로 구한다. 증가하는 부분 수열은 차이가 없지만, 감소하는 부분 수열은 원래는 i까지 감소하는 부분수열을 구했었는데 여기선 i부터 n까지 감소하는 부분 수열을 구한다는 점이.. 2020. 8. 26.
반응형