오타
면접 대비시간 제한1초메모리 제한128 MB
오타가 많아야 하나인 괄호 문자열이 주어질 때, 문자 하나를 뒤집어 올바른 괄호 문자열로 만드는 위치의 수를 센다.
문제
올바른 괄호 문자열을 좋아하는 키파는 최근에 노트북을 샀다. 그런데 키보드가 너무 작아서, 키파는 여는 괄호 ( 와 닫는 괄호 ) 를 실수로 뒤바꿔 입력하지는 않았을까 걱정되었다. 키파는 매우 조심해서 입력했기 때문에, 오타는 많아야 한 곳에서만 났다.
키파가 입력한 괄호 문자열이 주어질 때, 문자 하나만 바꿔서(여는 괄호를 닫는 괄호로, 또는 닫는 괄호를 여는 괄호로) 전체를 올바른 괄호 문자열로 만들 수 있는 서로 다른 위치가 몇 개인지 세어 키파를 도와주자.
올바른 괄호 문자열은 다음과 같이 정의된다.
()는 올바른 괄호 문자열이다.- 문자열
A가 올바른 괄호 문자열이면(A)도 올바른 괄호 문자열이다. - 문자열
A와B가 모두 올바른 괄호 문자열이면, 이를 이어 붙인AB도 올바른 괄호 문자열이다.
입력
첫째 줄에 키파가 입력한 괄호 문자열이 주어진다. 문자열은 ( 와 ) 로만 이루어져 있으며, 길이 은 을 만족한다.
출력
정확히 한 문자만 바꿔서 올바른 괄호 문자열로 만들 수 있는 위치의 개수를 첫째 줄에 출력한다. 그런 위치가 없으면 0 을 출력한다.
힌트
키파가 입력한 문자열 ()(()))) 를 살펴보자. 각 문자의 위치는 다음과 같다.
위치: 1 2 3 4 5 6 7 8
문자: ( ) ( ( ) ) ) )
번째 문자 ) 를 ( 로 바꾸면 올바른 괄호 문자열 (((()))) 가 된다. 같은 방법으로 번째, 번째, 번째 문자를 각각 바꿔도 올바른 괄호 문자열을 만들 수 있으므로, 답은 이다.