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

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

스노우 콘

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

요약
아이들이 받은 맛과 원하는 맛이 각각 주어질 때, 이웃끼리 동시에 교환하는 시간 단계의 최솟값을 구한다.
난이도

보통10점 중 6점

유형
그리디, 투 포인터, 구현, 문자열
정답자
아직 제출이 없습니다

문제

아이들이 한 줄로 서 있고, 각 아이는 두 가지 맛 중 하나의 스노우 콘을 받습니다. 나누어 주는 과정에서 콘이 뒤섞여, 어떤 아이는 자신이 원한 맛을 받지 못할 수 있습니다. 나누어 준 각 맛의 개수는 아이들이 원한 각 맛의 개수와 정확히 같으므로, 아이들은 서로 교환하여 모두가 원하는 맛을 가질 수 있습니다.

한 번의 시간 단계 동안, 줄에서 이웃한 두 아이는 콘을 서로 교환할 수 있습니다. 여러 교환이 동시에 일어날 수 있지만, 각 아이는 한 시간 단계에 최대 한 번만 교환에 참여할 수 있습니다. 모든 아이가 자신이 원한 맛을 가질 때까지 필요한 최소 시간 단계 수를 구하세요.

입력

첫째 줄에 데이터 집합의 수 KK가 주어집니다. 이어지는 각 데이터 집합은 두 줄로 이루어집니다.

  • 첫째 줄은 길이 NN(1≤N≤10001 \le N \le 1000)의 문자열로, 줄에 선 순서대로 각 아이가 받은 맛을 나타냅니다.
  • 둘째 줄은 같은 NN개의 문자로 이루어진 문자열로, 각 아이가 원한 맛을 나타내며 순서는 다를 수 있습니다.

각 맛은 대문자 X와 O 중 하나입니다. 모든 데이터 집합에서 첫째 줄에 나오는 각 맛의 개수는 둘째 줄에 나오는 개수와 같습니다.

출력

각 데이터 집합마다 한 줄에 Data Set x:를 출력합니다. 여기서 xx는 11부터 시작하는 데이터 집합의 번호입니다. 다음 줄에는 모든 아이가 원한 맛을 가질 때까지 필요한 최소 시간 단계 수를 출력합니다. 연속한 두 데이터 집합 사이에는 빈 줄을 하나 넣어 구분합니다.

예제5

  1. 예제 1

    입력
    2
    XXO
    OXX
    OXOX
    XOXO
    
    예상 출력
    Data Set 1:
    2
    
    Data Set 2:
    1
    
  2. 예제 2

    입력
    1
    XOXO
    XOXO
    
    예상 출력
    Data Set 1:
    0
    
  3. 예제 3

    입력
    1
    X
    X
    
    예상 출력
    Data Set 1:
    0
    
  4. 예제 4

    입력
    1
    XO
    OX
    
    예상 출력
    Data Set 1:
    1
    
  5. 예제 5

    입력
    1
    XXOO
    OOXX
    
    예상 출력
    Data Set 1:
    3