만드는 중입니다

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

거울 괄호

면접 대비

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

요약
괄호와 거울상 문자로 이루어진 문자열 z에 반사 연산을 적용해 괄호가 모두 사라졌을 때의 최종 문자열을 구합니다.
난이도

보통10점 중 5점

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

문제

올바른 괄호 문자열(CBS)의 정의를 다시 짚어 보자.

  • 빈 문자열은 CBS이다.
  • ss가 CBS이면 (ss)와 [ss]도 CBS이다.
  • ss와 tt가 CBS이면 stst도 CBS이다.
  • 위 규칙으로 만들 수 없는 문자열은 CBS가 아니다.

Vasya는 "(", ")", "[", "]" 네 종류의 괄호로 이루어진 올바른 괄호 문자열을 썼다. 그 뒤 여러 위치에 "b", "d", "o", "p", "q", "x" 문자를 끼워 넣어 문자열 zz를 만들었다.

Vasya는 다음 연산을 반복한다.

zz에 (ss) 형태의 부분 문자열(ss에는 괄호가 없다)이 있으면, 이를 ss를 세로축에 대해 뒤집은 문자열로 바꾼다. zz에 [tt] 형태의 부분 문자열(tt에도 괄호가 없다)이 있으면, 이를 tt를 가로축에 대해 뒤집은 문자열로 바꾼다. 예를 들어 "(qbpoxd)"는 "bxoqdp"로, "[qbpoxd]"는 "dpboxq"로 바뀐다.

문자열에 괄호가 남지 않을 때까지 연산을 계속한다. 주어진 zz에 대해 Vasya가 최종적으로 얻는 문자열을 구하라.

입력

첫 번째 줄에 문자열 zz가 주어진다. zz의 길이는 10510^5을 넘지 않는다. zz는 "(", ")", "[", "]", "b", "d", "o", "p", "q", "x" 문자로 이루어진다. zz의 괄호는 올바른 괄호 문자열을 이룬다고 보장된다. 또한 입력에는 적어도 하나의 문자가 포함된다고 보장된다.

출력

Vasya가 최종적으로 얻는 문자열을 출력한다.

예제2

  1. 예제 1

    입력
    (qbpoxd)[qbpoxd]
    
    예상 출력
    bxoqdpdpboxq
    
  2. 예제 2

    입력
    d[xd(bx)op]q()[]xx
    
    예상 출력
    dxqxqobqxx