RNA는 몸속에서 중요한 일을 하는 분자다. RNA 분자의 구조는 다음 네 조건을 만족하는 순서쌍 (S,P)로 나타낸다.
A, C, G, U 중 하나다.아래는 RNA 구조 두 개다. 왼쪽이 A1=(S1,P1), 오른쪽이 A2=(S2,P2)이다.
ACCCGAACUU AAUAUCCCGAAU
((**)*(*)) *(**)(**)*()
두 RNA 구조 A=(S,P)와 A′=(S′,P′)에 대해 i≤j인 정수 i, j가 있어서 S′=si…sj이고 P′=pi…pj이면 A′를 A의 부분구조라고 한다. A′도 RNA 구조이므로 P′의 괄호 역시 균형이 맞아야 한다. 예를 들어
CCCG
(**)
인 A3=(S3,P3)은 A1의 부분구조다. 반면
ACCCGAACU
((**)*(*)
인 A4=(S4,P4)는 P4의 괄호 균형이 맞지 않아 A1의 부분구조가 아니다.
두 RNA 구조 X와 Y에 대해 Z가 둘 모두의 부분구조이면 Z를 X와 Y의 공통 부분구조라고 한다. 최장 공통 부분구조는 공통 부분구조 가운데 길이가 가장 긴 것이다.
위의 A1과 A2라면 최장 공통 부분구조의 길이는 5이고 다음과 같다.
CCCGA
(**)*
다음은 괄호 균형이 맞지 않아서 A1과 A2의 공통 부분구조가 아니다.
CCCGAA
(**)*(
길이가 450 이하인 RNA 구조 두 개가 주어진다. 최장 공통 부분구조의 길이를 구하라.
입력은 네 줄이다. 첫째 줄은 첫 번째 RNA의 염기 서열 S, 둘째 줄은 그 괄호열 P다. 셋째 줄은 두 번째 RNA의 염기 서열 S′, 넷째 줄은 그 괄호열 P′다.
한 RNA에서 염기 서열과 괄호열은 길이가 같고, 그 길이는 1 이상 450 이하다.
최장 공통 부분구조의 길이를 한 줄에 출력한다. 공통 부분구조가 하나도 없으면 0을 출력한다.