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

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

괄호 인코딩 변환

면접 대비

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

요약
올바른 괄호 문자열의 P-수열이 주어질 때 같은 문자열의 W-수열을 구한다.
난이도

보통10점 중 5점

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

문제

S=s1s2…s2nS = s_1 s_2 \dots s_{2n} 을 올바른 괄호 문자열이라고 하자(모든 여는 괄호가 짝이 되는 닫는 괄호를 가지며, 짝이 올바르게 중첩되어 있다). 이러한 문자열은 두 가지 방법으로 인코딩할 수 있다.

  1. P-수열 P=p1p2…pnP = p_1 p_2 \dots p_n: pip_i 는 SS 에서 ii 번째 닫는 괄호보다 앞에 있는 여는 괄호의 개수이다.
  2. W-수열 W=w1w2…wnW = w_1 w_2 \dots w_n: SS 의 ii 번째 닫는 괄호를 aa, 그와 짝이 되는 여는 괄호를 bb 라고 하자. wiw_i 는 bb 에서 시작하여 aa 에서 끝나는 부분 문자열(양 끝 포함)에 들어 있는 닫는 괄호의 개수이다.

예를 들어 아래 문자열의 경우:

SS(((()()())))
P-수열4 5 6 6 6 6
W-수열1 1 1 4 5 6

올바른 괄호 문자열의 P-수열이 주어지면, 같은 문자열의 W-수열을 출력하라.

입력

첫째 줄에 테스트 케이스의 수 tt (1≤t≤101 \le t \le 10) 가 주어진다.

각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에는 정수 nn (1≤n≤201 \le n \le 20) 이 주어지고, 둘째 줄에는 공백 하나로 구분된 nn 개의 양의 정수로 이루어진 P-수열이 주어진다.

출력

각 테스트 케이스마다 한 줄에 nn 개의 정수를 출력한다. 이는 주어진 P-수열에 대응하는 문자열의 W-수열이며, 정수들은 공백 하나로 구분한다.

예제4

  1. 예제 1

    입력
    2
    6
    4 5 6 6 6 6
    9
    4 6 6 6 6 8 9 9 9
    
    예상 출력
    1 1 1 4 5 6
    1 1 2 4 5 1 1 3 9
    
  2. 예제 2

    입력
    1
    1
    1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1
    3
    3 3 3
    
    예상 출력
    1 2 3
    
  4. 예제 4

    입력
    1
    3
    1 2 3
    
    예상 출력
    1 1 1