解説
서브태스크 에서는 의 모든 부분 수열을 열거하고, 각각이 의 부분 수열인지 확인할 수 있다. 시간 복잡도는 이다.
전체 문제에서는 를 의 앞 개 원소와 의 앞 개 원소의 최장 공통 부분 수열 길이라고 하자. 이다. 이면 이고, 그렇지 않으면 이다.
부터 역추적한다. 현재 두 원소가 같으면 그 원소를 답에 넣고 두 인덱스를 모두 줄인다. 다르면 값이 같은 쪽의 이전 상태로 이동한다. 역추적한 원소를 뒤집으면 정답이다. 값이 같은 이전 상태가 둘이라면 어느 쪽으로 이동해도 된다.
한 케이스의 시간 복잡도와 공간 복잡도는 모두 이다.
Solution written by GPT6