어떤 수열에서 0개 이상의 숫자를 지운 결과를 원 수열의 부분 수열이라고 부릅니다. 예를 들어 '4 7 6'은 '4 3 7 6 9'의 부분 수열입니다. 중복된 숫자가 없고 오름 차순으로 정렬되어 있는 부분 수열들을 가리켜 증가 부분 수열이라고 부르지요. 예를 들어 '3 6 9'는 앞의 수열의 증가 부분 수열입니다.
두 개의 정수 수열 A 와 B 에서 각각 증가 부분 수열을 얻은 뒤 이들을 크기 순서대로 합친 것을 합친 증가 부분 수열이라고 부르기로 합시다. 이 중 가장 긴 수열을 합친 LIS(JLIS, Joined Longest Increasing Subsequence)이라고 부릅시다. 예를 들어 '1 3 4 7 9' 은 '1 9 4' 와 '3 4 7' 의 JLIS입니다. '1 9' 와 '3 4 7' 을 합쳐 '1 3 4 7 9'를 얻을 수 있기 때문이지요.
A 와 B 가 주어질 때, JLIS의 길이를 계산하는 프로그램을 작성하세요.
문제 링크 - https://algospot.com/judge/problem/read/JLIS
'PROGRAMING' 카테고리의 다른 글
[c언어/c++] 삼각형 위의 최대 경로 수 세기 TRIPATHCNT 동적계획법 (0) | 2016.12.13 |
---|---|
[c언어/c++] 타일링 2 - TILING 2 동적계획법 (0) | 2016.12.13 |
[c언어/c++] Longest Increasing Sequence - LIS 동적계획법 (0) | 2016.12.13 |
[c언어/c++] 삼각형 위의 최대 경로 TRIANGLEPATH 동적계획법 (0) | 2016.12.13 |
[c언어/c++] 외발뛰기 JUMPGAME - 동적계획법 (0) | 2016.12.13 |