괄호 문자열이 있다고 가정합니다. 문자열을 올바르게 만들기 위해 제거해야 하는 최소 괄호 수를 계산하는 함수를 작성해야 합니다(각 열린 괄호는 결국 닫힙니다).
따라서 입력이 "(()))("와 같으면 올바른 문자열이 "(())"이므로 출력은 2가 됩니다. ")("를 제거하십시오.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 총계:=0, 온도:=0
- s의 각 p에 대해 다음을 수행합니다.
- p가 "("와 같으면
- 총계 :=총계 + 1
- 그렇지 않고 p가 ")"와 같고 total이 0이 아닌 경우
- 총계 :=총계 - 1
- 그렇지 않으면
- temp :=온도 + 1
- p가 "("와 같으면
- 반환 합계 + 온도
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): total = 0 temp = 0 for p in s: if p == "(": total += 1 elif p == ")" and total: total -= 1 else: temp += 1 return total + temp ob1 = Solution() string = "(()))(" print(ob1.solve(string))
입력
"(()))("
출력
2