생명체

시간 제한2초메모리 제한128 MB

요약
DNA 문자열 100개 이하가 주어질 때, 절반을 초과하는 문자열에 나타나는 가장 긴 연속 부분 문자열을 모두 찾아 사전순으로 출력한다.
난이도

보통10점 중 7점

유형
문자열, 이분 탐색, 해시맵, 정렬
정답자
아직 제출이 없습니다

문제

많은 외계 생명체가 키, 색, 주름, 귀, 눈썹 같은 표면적인 특징만 다를 뿐 사람과 닮은 이유가 궁금했을 것이다. 사람과 전혀 닮지 않은 소수의 생명체는 대개 정육면체, 기름막, 먼지 구름처럼 기하학적이거나 형체가 불분명한 모습을 띤다.

그 답은 이 은하 사분면에 사는 생명체 대부분이 공통된 DNA 조각을 크게 물려받았다는 데 있다.

여러 생명체의 DNA 서열이 알파벳 문자열로 주어질 때, 전체 생명체의 절반을 초과하는 수가 공통으로 가지는 가장 긴 부분 문자열(연속된 구간)을 찾아라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 생명체의 수 nn (1≤n≤1001 \le n \le 100)으로 시작한다. 이어서 nn개의 줄이 주어지며, 각 줄은 한 생명체의 DNA 서열을 나타내는 소문자 알파벳 문자열이다. 각 DNA 서열의 길이는 11 이상 10001000 이하이다. 마지막 테스트 케이스 다음에는 00만 있는 줄이 온다.

출력

각 테스트 케이스마다, 전체 생명체의 절반을 초과하는 수가 공통으로 가지는 가장 긴 문자열(들)을 출력한다. 조건을 만족하는 가장 긴 문자열이 여러 개이면 모두 사전순으로 출력한다. 길이가 11 이상인 답이 존재하지 않으면 ?를 출력한다. 테스트 케이스 사이에는 빈 줄을 하나 둔다.

예제1

  1. 예제 1

    입력
    3
    abcdefg
    bcdefgh
    cdefghi
    3
    xxx
    yyy
    zzz
    0
    
    예상 출력
    bcdefg
    cdefgh
    
    ?