가장 짧은 올바른 괄호 문자열
면접 대비시간 제한1초메모리 제한128 MB
괄호 문자열이 주어질 때, 이를 부분 수열로 포함하는 가장 짧은 규칙 괄호열의 길이를 구한다.
문제
올바른 괄호 문자열(regular brackets sequence)을 다음과 같이 정의한다.
- 빈 문자열은 올바른 괄호 문자열이다.
- 문자열 가 올바른 괄호 문자열이면 와 도 올바른 괄호 문자열이다.
- 문자열 와 가 모두 올바른 괄호 문자열이면 두 문자열을 이어 붙인 도 올바른 괄호 문자열이다.
예를 들어 다음 문자열은 모두 올바른 괄호 문자열이다.
(), [], (()), ([]), ()[], ()[()]
반면 다음 문자열은 모두 올바른 괄호 문자열이 아니다.
(, [, ), )(, ([)], ([(]
(, ), [, ] 네 종류의 문자로 이루어진 문자열이 주어진다. 이 문자열을 부분 수열로 포함하는 가장 짧은 올바른 괄호 문자열을 찾고, 그 길이를 구하여라.
여기서 문자열 이 문자열 의 부분 수열이라는 것은, 을 만족하는 인덱스가 존재하여 모든 에 대해 가 성립함을 뜻한다.
입력
첫째 줄에 (, ), [, ]로만 이루어진 문자열이 주어진다. 문자열의 길이는 최대 이며 다른 문자는 포함되지 않는다. 빈 문자열(빈 줄)이 주어질 수도 있으며, 이는 빈 수열을 의미한다.
출력
주어진 문자열을 부분 수열로 포함하는 올바른 괄호 문자열 중 가장 짧은 것의 길이를 정수 하나로 출력한다.