ページが読み込まれませんか? こちらをクリックすると直るかもしれません。
Placeholder

#1888

DNA sorting 1s 256MB

問題

염기서열(문자 A,C, G, T로 이루어져 있는 문자열) 여러 개의 염기서열들이 주어져 있다. 

생물정보학에 관심이 많은 동훈이는 어느 날 실험을 하다가 염기서열이 ACGT 순으로 잘 정렬이 되어 있을 경우에 

해당 염기서열을 가진 사람이 병에 걸릴 확률이 높다는 사실을 알게 되었다. 

여기서 잘 정렬이 되어 있다는 것은 해당 문자열을 A...C...G...T...순으로 정렬을 할 경우 정렬 연산을 할 때 

두 개의 원소를 바꾸는 횟수가 작은 것을 말하며, 만약 두 개의 원소를 바꾸는 횟수가 큰 경우에는 정렬이 잘 되어 있지 않다라고 할 수 있다.

가령 DAABEC라는 문자열의 경우 5번의 교환 횟수가 필요하며, AACEDGG의 경우는 1번의 교환횟수, ZWQM의 경우는 6번 교환을 하여야 한다.

주어진 염기 서열들에 대해서 정렬이 잘 되어 있는 것부터 정렬이 안되어 있는 순으로 정렬을 하여 

어떤 염기 서열이 병을 일으킬 확률이 높은지 알아보는 프로그램을 작성하라.


入力

첫 번째 줄에는 입력에 들어오는 모든 염기서열들의 길이 N(0 < N ≤ 50)과 염기서열의 개수 M(0 < m ≤ 100)이 차례대로 입력된다. 그 다음 줄에는 길이가 N인 M개의 염기 서열이 입력된다. 염기서열을 이루는 문자는 대문자 A, C, G, T이다.


出力

입력된 염기 서열들에 대해 가장 잘 정렬이 되어 있는 염기서열부터 가장 정렬이 안되어 있는 염기 서열순으로 아래와 같이 출력하라.


例題

10 6

AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
CCCGGGGGGA

AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
ログインしないとコードを書けません。