모든 생물의 DNA 서열은 A, C, G, T 네 개의 문자로 표현된다.
두 DNA 서열이 얼마나 비슷한가를 알아내기 위하여 유사도를 측정한다. 두 DNA 서열의 유사도를 측정하기 위해서 먼저 각 서열의 임의의 위치에 공백을 넣어 길이를 같게 만든다. 이렇게 길이가 같아진 두 서열 간의 점수는 다음과 같이 계산된다.
예를 들어 AGTCAG와 ATGTG라는 두 DNA서열의 경우, < 그림 1 >과 같이 공백을 넣으면 점수가 3이 되고, < 그림 2 >와 같이 공백을 넣으면 점수는 6이 된다.
AGTCAG | | | A TGTG <그림 1> A GTCAG | || | ATGT G <그림 2>
AGTCAG와 ATGTG의 경우 임의의 위치에 공백을 넣어 얻을 수 있는 최대 점수는 6이므로 AGTCAG와 ATGTG의 유사도는 6이 된다.
DNA 서열의 부분 서열은 DNA 서열 중 연속한 일부분을 추출하여 얻을 수 있는 서열을 말한다.
예를 들어 AGTCAG라는 서열에서 첫 번째 문자부터 세 번째 문자까지를 추출하면 AGT라는 부분 서열을 얻을 수 있고, 두 번째 문자부터 다섯 번째 문자까지 추출하면 GTCA라는 부분 서열을 얻을 수 있다.
두 DNA 서열에서 같은 정보를 담고 있는 부분을 찾아내는 방법 중에 하나는 두 DNA의 부분 서열 쌍 중 유사도가 가장 큰 것을 찾아내는 것이다.
예를 들어 두 DNA 서열 AGTCAG와 ATGTG의 경우 AGTCAG에서 부분 서열 AGT를 얻고, ATGTG에서 부분 서열 ATGT를 얻으면 이 둘의 유사도는 아래와 같이 7이 된다.
두 DNA 서열을 입력받아 이들 DNA의 부분 서열 쌍 중 유사도가 가장 큰 것을 찾아 그 유사도와 부분 서열 쌍을 출력하는 프로그램을 작성하시오.A GT | || ATGT
프로그램의 실행시간은 1초를 초과할 수 없다.
입력 6 AGTCAG 5 ATGTG 출력 7 AGT ATGT
출처:전국 중등부예선