주어진 문자열 는 별표(*)가 삽입된 균형잡힌 괄호입니다.
모든 균형잡힌 괄호들은 아래와 같은 규칙에 의해 구성됩니다!
여러분이 해야 할 일은 별표(*) 주변에 균형잡힌 괄호의 쌍을 얼마나 있는지 세는 것입니다.
S의 i번째 문자를 S_i로 나타낸다고 가정 후,
과 쌍 (l<r)에서 별표 기호를 무시했을 때 그 사이의 문자열이 균형잡혔다면,
해당 문자열 쌍을 매칭 괄호 쌍이라고 합니다.
입력은 아래와 같이 하나의 테스트 케이스로 구성됩니다.
S
는 정확히 한 곳에 별표(*)가 삽입된 균형잡힌 괄호 문자열입니다. 의 길이는 1에서 100 사이입니다.
정답을 한 줄로 출력해주세요.
균형 잡힌 괄호 문제이기 때문에 stack으로도 풀 수 있지만,
굳이 stack이 아니더라도
* 왼쪽의 부분 문자열을 구한 후 해당 부분 문자열을 기준으로 괄호의 수를 카운팅하는 것이
가장 중요한 포인트이다.
나의 경우에는 * 문자의 위치를 기준으로 왼쪽 부분 문자열을 추출한 다음,
왼쪽 부분 문자열에서 여는 괄호와 닫는 괄호의 수를 세어 괄호 쌍의 차이를 출력하는 방식으로 구현하였다.
s = input()
star = s.index('*')
left_sub_string = s[:star]
res = left_sub_string.count('(') - left_sub_string.count(')')
print(res)