pDNA
문제 정보
-
- 문제 ID
- 시간 제한
- 메모리 제한
- 제출 횟수
- 정답 횟수 (비율)
-
- 출처
- 분류
문제
앞, 뒤 어느쪽에서 읽어도 동일한 염기서열을 pDNA (palindromic DNA) 라고 합니다. 예를 들어, AGA 는 pDNA 이지만, TAGCT 는 pDNA 가 아닙니다.
국방의 의무를 마치고 학교에 돌아온 진호는 보이지 않는 손에 의해 bioinformatics 를 연구하는 연구실의 인턴이 되어 있었습니다. 최근 진호가 맡은 과제는 pDNA를 찾는 것으로, 진호는 며칠간의 밤샘 작업을 통해 여러개의 pDNA 를 찾고 자신이 한 일에 보람을 느끼며 연구실에서 퇴근했습니다.
그런데, 모든 연구실의 사람들이 퇴근하여 아무도 없는 새벽에 만취 상태의 현환이가 들어와서 진호의 자리를 자신의 자리로 착각하고 그곳에 앉아서 컴퓨터를 쓰게 되었습니다. 평소에 바탕화면을 깨끗하게 쓰기로 유명한 현환이는 너무나 많은 바탕화면의 아이콘을 보고, '악성코드가 생겼나' 라는 생각을 하며 바탕화면에 있는 모든 것을 지워버렸습니다. 그런데 하필이면 진호가 찾은 pDNA의 데이터는 바탕화면에 저장이 되어 있었던 것입니다!
간만에 숙면을 하고 말끔해진 피부로 연구실에 나온 진호는 아침에 컴퓨터를 켜고나서 데이터가 지워진 사실을 알고 경악을 금치 못했습니다! 그리하여 부랴부랴 LastData 라는 복원 프로그램을 사용하여 복원을 시도하였으나, pDNA들이 조각 나고 순서가 뒤죽박죽 된 채로 복원이 되었습니다.
당황한 진호는 YUTAR Local Contest 에 참여하고 있는 절친인 당신에게 도움을 청했습니다. 교수님이 진호에게 진행 상황을 물어보는 랩미팅은 2009년 7월 5일 오후 6시 부터 이기 때문에, 그전까지 pDNA 데이터를 복원하는 프로그램을 작성해야 합니다!
입력
입력의 첫 줄에는 테스트 케이스의 수 C (1 <= C <= 50) 가 주어집니다. 그 후 한 줄에 하나씩 C 개의 테스트 케이스가 주어집니다. 각 테스트 케이스는 쪼개진 pDNA 조각의 수 N (1 <= N <=10) 과 각 조각들의 염기 서열로 주어집니다.
모든 pDNA 조각들은 소문자 a, g, c, t 로만 구성되며, 원 pDNA 의 길이는 항상 100 이하라고 가정해도 좋습니다.
출력
각 테스트 케이스마다 한 줄을 출력하되, 복원된 pDNA 를 출력합니다. 답이 존재하지 않는 경우는 없으며, 만약에 가능한 경우가 여럿 있을 경우 사전순으로 가장 앞에 나오는 것 (lexicographically smallest) 을 출력합니다.
예제 입력
2 3 aa att aaa 4 ac tgt ac caca
예제 출력
aaattaaa acactgtcaca
노트
pDNA가 실제로 있는 단어는 아닙니다.