아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

(ℓ, d) 패턴

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

요약
길이 l인 부분 문자열이 모든 입력 문자열에 해밍 거리 d 이내로 들어맞는 유일한 소문자 패턴을 구합니다.
난이도

보통10점 중 6점

유형
완전 탐색, 문자열 매칭
정답자
아직 제출이 없습니다

문제

공백과 알파벳 소문자 26개(a부터 z까지)로만 이루어진 문자열 kk개 S1,S2,…,SkS_1, S_2, \dots, S_k가 있다.

두 상수 ℓ\ell과 dd에 대해 이 문자열 집합의 (ℓ,d)(\ell, d)-패턴을 구하자. (ℓ,d)(\ell, d)-패턴은 다음 조건을 만족하는 길이 ℓ\ell의 문자열 W=W[1]W[2]⋯W[ℓ]W = W[1]W[2] \cdots W[\ell]이다.

  • 모든 i=1,2,…,ki = 1, 2, \dots, k에 대해, WW와의 해밍 거리가 dd 이하인 길이 ℓ\ell의 부분 문자열 X=X[1]X[2]⋯X[ℓ]X = X[1]X[2] \cdots X[\ell]이 SiS_i 안에 적어도 하나 있다.

XX와 WW의 해밍 거리는 X[j]≠W[j]X[j] \neq W[j]인 위치 jj의 개수다. 부분 문자열은 연속한 ℓ\ell글자를 뜻하고, 공백을 포함할 수도 있다.

WW는 알파벳 소문자로만 이루어진다. 입력으로 주어지는 자료에서 (ℓ,d)(\ell, d)-패턴은 항상 존재하고 유일하다.

입력

첫째 줄에 두 정수 ℓ\ell과 dd가 공백으로 구분되어 주어진다. (1≤ℓ≤101 \le \ell \le 10, 0≤d≤20 \le d \le 2)

둘째 줄에 문자열의 개수 kk가 주어진다. (1≤k≤301 \le k \le 30)

다음 kk개 줄에 문자열 S1,S2,…,SkS_1, S_2, \dots, S_k가 한 줄에 하나씩 주어진다. 각 문자열의 길이는 50 이하이고, 공백과 알파벳 소문자로만 이루어진다. 패턴이 존재하므로 모든 문자열의 길이는 ℓ\ell 이상이다.

출력

첫째 줄에 (ℓ,d)(\ell, d)-패턴 WW를 출력한다.

예제2

  1. 예제 1

    입력
    5 1
    4
    you have two applas
    i am an ppple
    we are acples
    adples are good for health
    
    예상 출력
    apple
    
  2. 예제 2

    입력
    3 0
    3
    oil is expensive
    we have three oilers
    be more oily
    
    예상 출력
    oil