만드는 중입니다

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

숨은 애너그램

면접 대비

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

요약
두 소문자 문자열 s1과 s2가 주어질 때, s1의 어떤 부분 문자열이 s2의 어떤 부분 문자열과 애너그램 관계가 되는 최대 길이를 구한다.
난이도

보통10점 중 5점

유형
해시맵, 문자열, 완전 탐색, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

애너그램은 어떤 단어나 구절의 글자를 재배열해서 만든 다른 단어나 구절이다. 예를 들어 "William Shakespeare"의 글자를 재배열하면 "I am a weakish speller"나 "I'll make a wise phrase"를 만들 수 있다. A가 B의 애너그램이면 B도 A의 애너그램이다.

위 예에서는 대소문자 차이를 무시했고, 공백과 문장 부호를 마음대로 넣거나 뺐다. 이 문제에서는 그런 규칙을 쓰지 않는다. 글자가 정확히 일치하는지만 본다.

두 문자열 s1s_1, s2s_2가 있다. s1s_1의 부분 문자열 s1′s_1'이 s2s_2의 부분 문자열 s2′s_2'의 애너그램이면, s1′s_1'을 두 문자열의 숨은 애너그램이라고 한다. 이때 s2′s_2'도 숨은 애너그램이다.

두 문자열이 주어지면 가장 긴 숨은 애너그램의 길이를 구하는 프로그램을 작성하라.

예를 들어 "anagram"과 "grandmother"가 주어졌다고 하자. 부분 문자열 "nagr"와 "gran"은 글자를 옮기면 서로 만들 수 있으므로 숨은 애너그램이다. 그리고 이 둘이 가장 길다. 길이가 5 이상인 "grandmother"의 부분 문자열은 "anagram"에 없는 "d"나 "o"를 반드시 포함하기 때문이다. 따라서 이 경우 답은 4다. 부분 문자열은 원래 문자열에서 연속으로 나타나는 글자의 나열이어야 하므로 "nagrm"과 "granm"은 숨은 애너그램이 아니다.

입력

입력은 두 줄로 이루어진다.

s1
s2

s1s_1과 s2s_2는 알파벳 소문자 a부터 z까지로만 이루어지고, 각 길이는 1 이상 4000 이하이다.

출력

s1s_1과 s2s_2의 가장 긴 숨은 애너그램의 길이를 출력한다. 숨은 애너그램이 없으면 0을 출력한다.

예제4

  1. 예제 1

    입력
    anagram
    grandmother
    
    예상 출력
    4
    
  2. 예제 2

    입력
    williamshakespeare
    iamaweakishspeller
    
    예상 출력
    18
    
  3. 예제 3

    입력
    aaaaaaaabbbbbbbb
    xxxxxabababxxxxxabab
    
    예상 출력
    6
    
  4. 예제 4

    입력
    abababacdcdcd
    efefefghghghghgh
    
    예상 출력
    0