만드는 중입니다

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

ABB to BA (어려운 버전)

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

요약
A와 B로 이루어진 문자열에서 가장 왼쪽의 ABB를 BA로 바꾸는 작업을 더 이상 할 수 없을 때까지 반복하고, 최종 문자열을 출력합니다.
난이도

보통10점 중 6점

유형
문자열, 스택, 시뮬레이션
정답자
아직 제출이 없습니다

문제

이 문제는 "ABB to BA"의 어려운 버전입니다. 두 버전은 tt와 nn의 제한을 제외하고 동일합니다.

A와 B만으로 이루어진 문자열 SS가 주어집니다. 다음 동작을 더 이상 수행할 수 없을 때까지 반복하세요.

  • SS에서 부분 문자열 ABB가 처음 나타나는 위치를 ii라고 합니다. 그 위치의 ABB를 BA로 바꿉니다.
  • 즉, SiSi+1Si+2S_iS_{i+1}S_{i+2}가 ABB인 가장 작은 ii를 찾아 SiS_i와 Si+1S_{i+1}을 각각 B와 A로 바꾸고, Si+2S_{i+2}는 SS에서 지웁니다.
  • SS에 ABB가 부분 문자열로 없으면 동작을 수행할 수 없습니다.

반복이 끝난 후 SS의 내용을 출력하세요.

입력

첫 번째 줄에 테스트 케이스의 개수 tt가 주어집니다. (1≤t≤5⋅1041 \le t \le 5 \cdot 10^4)

각 테스트 케이스는 두 줄로 이루어집니다.

  • 첫 번째 줄에 SS의 길이 nn이 주어집니다. (1≤n≤5⋅1051 \le n \le 5\cdot 10^5)
  • 두 번째 줄에 길이 nn의 문자열 SS가 주어집니다. (SiS_i는 모두 A 또는 B)

모든 테스트 케이스의 nn의 합은 5⋅1055\cdot 10^5을 넘지 않습니다.

출력

각 테스트 케이스에 대해 반복이 끝난 후 SS의 내용을 한 줄에 출력합니다.

예제1

  1. 예제 1

    입력
    3
    3
    ABB
    9
    ABABABBBB
    12
    AAAAAABBBBBB
    
    예상 출력
    BA
    BAABA
    AAAABABA