공의 개수의 최소값을 구하기 위해선 잡초에 완전히 가려진 것은 건너 뛴다.
즉 ||일 때 공이 있을 수도 있지만 완전히 가려졌기에 없다고 보는 것이다.
하지만 |)일 때에는 반 쪽만 가려졌기에 카운트해야한다.
마찬가지로 (|도 카운트 해야한다.
() 완전히 다 나온 것도 카운트 해야한다. 이것을 코드화 하면 다음과 같다.
for test_case in range(1, T+1):
arr = ['?']
for s in input():
arr.append(s)
arr.append('?')
answer = 0
for i in range(1, len(arr) - 1):
if arr[i] == "(" and arr[i + 1] == "|":
answer += 1
elif arr[i] == ")" and arr[i - 1] == "|":
answer += 1
elif arr[i] == "(" and arr[i+1] == ")":
answer += 1
print("#" + str(test_case) + " "+ str(answer))
앞 뒤에 ? 넣은 이유는 에러를 막기 위해서이다. 만약 인덱스 0자리에 )라면 i-1에서 에러가 발생하기 때문에 dummy값 ?를 앞뒤로 추가하였다.