'(' 및 ')' 괄호의 문자열 S가 있다고 가정하고 결과 괄호 문자열이 유효하도록 임의의 위치에 최소 수의 괄호를 추가합니다. 괄호 문자열은 −
인 경우에만 유효합니다.- 빈 문자열입니다.
- XY(X는 Y와 연결됨)로 작성할 수 있습니다. 여기서 X와 Y는 유효한 문자열입니다.
- (A)로 쓸 수 있습니다. 여기서 A는 유효한 문자열입니다.
따라서 문자열이 "()))(("과 같으면 문자열을 유효하게 만들기 위해 4개의 괄호를 더 추가해야 합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- S가 비어 있으면 0을 반환합니다.
- count :=0, temp는 배열, temp_counter :=0
- for i in S
- 괄호를 여는 경우 temp에 i를 삽입합니다.
- 그렇지 않으면
- temp의 길이가 0이고 의 마지막 요소가 여는 괄호일 때 temp의 마지막 요소를 삭제하고, 그렇지 않으면 i를 temp에 삽입
- 온도의 크기를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def minAddToMakeValid(self, S): if not S: return 0 count = 0 temp = [] temp_counter = 0 for i in S: if i =='(': temp.append(i) else: if len(temp)>0 and temp[len(temp)-1] =='(': temp.pop(len(temp)-1) else: temp.append(i) return len(temp) ob = Solution() print(ob.minAddToMakeValid("()))(("))
입력
"()))(("
출력
4