음악

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

요약
세 개의 음악 문자열에 연속되지 않는 쉼표를 삽입해 길이를 맞추고 열 단위 점수를 최대화하거나 불가능하면 -1을 출력하는 문제입니다.
난이도

보통10점 중 7점

유형
동적 계획법, 문자열, 조합론
정답자
아직 제출이 없습니다

문제

음악에는 C, D, E, F, G, A, B의 일곱 음정이 있다. 세 개의 음악이 주어진다. 각 음악에는 원하는 위치에 쉼표를 뜻하는 &를 삽입할 수 있으며, 삽입이 끝난 세 음악의 길이는 모두 같아야 한다.

단, 한 음악 안에서 &가 두 번 이상 연속해서 나오면 안 된다.

정렬된 세 음악을 왼쪽부터 한 열씩 본다. 한 열의 점수는 다음과 같다.

  • 세 음악이 모두 같은 실제 음정을 연주하면 3점이다.
  • 정확히 두 음악만 실제 음정을 연주하고, 그 두 음정이 같으면 1점이다.
  • 그 밖의 경우는 0점이다. 특히 실제 음정 하나와 & 두 개만 있는 열은 1점이 아니다.

세 음악에 &를 적절히 삽입하여 얻을 수 있는 총점의 최댓값을 구하라. 위 조건을 만족하도록 세 음악의 길이를 같게 만들 수 없다면 -1을 출력한다.

입력

한 줄에 하나씩 세 개의 음악이 주어진다. 각 음악은 일곱 음정으로만 이루어져 있으며, 길이는 1 이상 100 이하이다.

출력

조건을 만족하는 배치 중 총점의 최댓값을 첫째 줄에 출력한다. 가능한 배치가 없으면 -1을 출력한다.

예제5

  1. 예제 1

    입력
    GABBCDEACF
    GAFGFCBBDEDD
    AFAFGCEECDEDF
    
    예상 출력
    15
    
  2. 예제 2

    입력
    ABCDEF
    BCDEFG
    DEFGAB
    
    예상 출력
    5
    
  3. 예제 3

    입력
    BCDEFGGADEF
    BCDE
    CDEFGABBA
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    GAGABDEDCGAFFAB
    DAFFAGAEECCBA
    GCBDAAEGEAGAFF
    
    예상 출력
    14
    
  5. 예제 5

    입력
    CGCC
    C
    CC
    
    예상 출력
    -1