괄호 짝 맞추기
시간 제한2초메모리 제한512 MB
소문자 문자열 S가 주어질 때, S에 맞는 괄호열 중 사전순으로 가장 앞선 것을 구하고 없으면 -1을 출력한다.
문제
올바른 괄호 문자열을 다음과 같이 정의한다.
- 빈 문자열은 올바른 괄호 문자열이다.
- 가 올바른 괄호 문자열이면 도 올바른 괄호 문자열이다.
- 과 가 모두 올바른 괄호 문자열이면 둘을 이어 붙인 도 올바른 괄호 문자열이다.
길이가 인 올바른 괄호 문자열 의 번째 문자를 라고 하자. 두 인덱스 와 ()가 다음 두 조건을 모두 만족하면 와 는 서로 짝이다.
- 는
(이고 는)이다. - 이거나, 부분 문자열 이 올바른 괄호 문자열이다.
소문자로 이루어진 문자열 의 번째 문자를 라고 하자. 올바른 괄호 문자열 가 에 대응한다는 것은 다음 두 조건이 성립한다는 뜻이다.
- 의 길이는 의 길이와 같다.
- 인 모든 인덱스 쌍에서 와 가 짝이면 이다.
소문자 개로 이루어진 문자열 가 주어진다. 에 대응하는 올바른 괄호 문자열 중 사전순으로 가장 앞서는 것을 구한다.
입력
첫째 줄에 소문자 개로 이루어진 문자열 가 주어진다.
- 괄호 문자열 가 괄호 문자열 보다 사전순으로 앞선다는 것은, 어떤 인덱스 ()가 있어서 인 모든 에 대해 이고 인 경우를 말한다.
- 문자
(는 문자)보다 사전순으로 앞선다.
출력
첫째 줄에 에 대응하는 올바른 괄호 문자열 중 사전순으로 가장 앞서는 문자열을 출력한다. 그런 문자열이 없으면 -1을 출력한다.