[Java] 가장 긴 증가하는 부분 수열 4
https://www.acmicpc.net/problem/14002해결 방법사용한 알고리즘: DP접근 방법:테이블 정의: d[i]: 첫 시작 원소부터 i번째 원소까지 고려했을 때, 가장 긴 증가하는 수열의 길이점화식:i번째 원소를 포함하지 않을 경우: d[i] = d[i-1]i번째 원소를 포함하는 경우(if 조건을 만족할 경우): for j if(aj d[i] = d[j]+1i번째 원소를 포함할 경우, i보다 작은 j에 대해 가장 긴 증가하는 수열의 길이 + 1을 하여 현재 i번째 가장 긴 증가하는 수열의 길이(d[i])와 비교하여 최대값으로 업데이트 한다.추가적으로 길이뿐만 아니라, 가장 긴 증가하는 부분 수열을 출력해야 한다. 이를 위해 역추적 배열을 썼다.for j if(aj 이 과정에서 if..
알고리즘/다이나믹 프로그래밍
2024. 9. 17. 20:31