만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

유사 라임 게임

면접 대비

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

요약
서로 다른 n개의 단어가 주어질 때, 길이 F 이상의 공통 접미사를 가진 단어끼리 짝지어 만들 수 있는 쌍의 최대 개수를 구한다.
난이도

보통10점 중 5점

유형
트라이, 그리디, 문자열, DFS
정답자
아직 제출이 없습니다

문제

Alice는 영어 단어를 조합해 라임(rhyme)을 만드는 단어 게임을 즐긴다. Bob도 라임을 만들고 싶어 하지만 아직 어려서 단어를 잘 모르기 때문에, Alice가 "유사 라임 게임"을 제안했다.

먼저 영문 대문자로만 이루어진 길이 LL인 서로 다른 단어 nn개를 종이에 적는다. 편의상 이 단어들을 W1,W2,…,WnW_1, W_2, \dots, W_n이라 하자.

두 단어 WiW_i와 WjW_j의 최대 공통 접미사의 길이가 FF 이상이면 두 단어가 "유사 라임"을 이룬다고 정의한다. 이런 단어 쌍을 "유사 라임 쌍"이라 부른다.

"유사 라임 게임"은 주어진 단어들로 최대한 많은 "유사 라임 쌍"을 만드는 게임이다. 단, 한 단어는 최대 하나의 유사 라임 쌍에만 속할 수 있다.

예를 들어 n=4n = 4, L=4L = 4이고 네 단어가 W1=W_1 = "WALK", W2=W_2 = "TALK", W3=W_3 = "MILK", W4=W_4 = "BULK"라 하자.

  • F≤2F \le 2라면 아무렇게나 두 쌍으로 묶어도 유사 라임 쌍이 되므로 22개의 쌍을 찾을 수 있다. 예를 들면 ("WALK", "BULK"), ("TALK", "MILK")가 있다.
  • F=3F = 3이라면 ("WALK", "TALK")를 묶어 유사 라임 쌍 하나를 만들 수 있지만, 22개 이상을 만들 방법은 없다.
  • F≥4F \ge 4라면 유사 라임 쌍을 만들 방법은 없다.

입력으로 FF와 길이 LL인 nn개의 단어가 주어졌을 때, Bob이 만들 수 있는 "유사 라임 쌍"의 최대 개수를 구해보자.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 입력은 두 줄에 걸쳐 주어진다. 첫 줄에 nn, LL, FF가 공백으로 구분되어 주어진다. 둘째 줄에 영문 대문자로만 이루어진 길이 LL인 문자열 nn개 W1,W2,…,WnW_1, W_2, \dots, W_n이 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

제한

  • 1≤T≤101 \le T \le 10
  • 1≤F≤L≤101 \le F \le L \le 10
  • 2≤n≤5002 \le n \le 500
  • 각 문자열 WiW_i는 알파벳 대문자로만 이루어져 있다.
  • 각 테스트 케이스에 주어지는 nn개의 문자열은 중복되지 않는다.

힌트

최대 공통 접미사: 두 문자열의 공통 접미사(common suffix) 중 길이가 가장 긴 것을 말한다.

예제1

  1. 예제 1

    입력
    5
    4 4 2
    WALK TALK MILK BULK
    4 4 3
    WALK TALK MILK BULK
    4 4 4
    WALK TALK MILK BULK
    6 3 1
    AXB BCC DEE XBB YCC ZEE
    6 3 2
    AXB BCC DEE XBB YCC ZEE
    
    예상 출력
    2
    1
    0
    3
    2