유전자 재배열
면접 대비시간 제한1초메모리 제한128 MB
1부터 N까지의 순열 두 개가 주어질 때, 두 순열에서 같은 유전자 집합을 담는 가장 짧은 연속 구간들로 전체를 나눈다. - use 합니다체
문제
서로 가까운 두 종, 예를 들어 양배추와 순무의 유전체(게놈)에는 비슷한 유전자들이 들어 있을 수 있습니다. 다만 진화 과정에서 일어난 유전체 자리바꿈 때문에, 같은 유전자라도 각 유전체 안에서 나타나는 순서는 서로 다를 수 있습니다.
여러분이 할 일은 두 유전자 서열을 비교하여 두 유전체에 공통으로 존재하는 구간을 찾는 것입니다. 여기서 공통 구간이란, (순서는 달라도 되므로) 두 유전체에서 정확히 같은 유전자 집합을 담고 있는 연속된 위치 구간을 뜻합니다.
이 문제에서 유전자는 염기 A, C, G, T의 나열로 표기하지 않고, 각각 하나의 정수로 부호화합니다. 비교하는 두 유전체는 같은 정수들로 이루어지며, 각 유전체는 의 순열입니다. 여기서 은 유전체의 길이입니다.
공통 구간 는 을 만족하는 구간으로, 첫 번째 유전체의 번째부터 번째까지 위치에 있는 유전자(정수)들의 집합이 두 번째 유전체의 같은 위치들에 있는 유전자들의 집합과 정확히 일치하는 구간을 말합니다. (순서는 달라도 됩니다.)
출력해야 하는 것은 최소 공통 구간입니다. 이는 유전체 전체 을 연속된 공통 구간들로 가장 잘게 나눈 분할의 각 조각을 뜻합니다. 구체적으로, 첫 번째 유전체의 앞에서부터 개 유전자의 집합과 두 번째 유전체의 앞에서부터 개 유전자의 집합이 같아질 때마다 위치 바로 뒤에 경계를 둡니다. (위치 과 은 항상 경계입니다.) 이렇게 만들어진, 이웃한 두 경계 사이의 각 구간이 하나의 최소 공통 구간입니다.
입력
첫 번째 줄에는 뒤따르는 테스트 케이스의 개수를 나타내는 정수 하나가 주어집니다. 각 테스트 케이스의 형식은 다음과 같습니다.
- 한 줄에 유전체의 길이를 나타내는 정수 이 주어집니다. ()
- 한 줄에 첫 번째 유전체를 나타내는 의 순열이 주어집니다.
- 한 줄에 두 번째 유전체를 나타내는 의 순열이 주어집니다.
같은 줄에 있는 정수들은 공백 하나로 구분됩니다.
출력
각 테스트 케이스마다, 두 유전체에 공통인 최소 공통 구간들을 왼쪽에서 오른쪽 순서로 나열하여 한 줄에 출력합니다. 각 구간은 시작 위치와 끝 위치를 붙임표로 이은 i-j 형태로 쓰고, 이웃한 구간은 공백 하나로 구분합니다.