이러한 문자 '(' 및 ')'만 있는 두 개의 대괄호 시퀀스 s 및 t가 있다고 가정합니다. s와 t의 연결된 문자열이 균형이 맞는지 확인해야 합니다. 연결은 s | t 또는 t | s.
따라서 입력이 s ="()()))", t ="()(()(")와 같으면 출력은 True가 됩니다. 왜냐하면 t | s를 연결하면 "() (()(()()))", 균형이 잡혀 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- is_balanced_parenthesis() 함수를 정의합니다. 문자열이 필요합니다.
- 스택 :=새 목록
- 0~문자열 크기 범위의 i에 대해
- 문자열[i]가 '('와 같으면
- 문자열[i]를 스택에 푸시
- 그렇지 않으면
- 스택이 비어 있으면
- 거짓을 반환
- 그렇지 않으면
- 스택에서 팝
- 스택이 비어 있으면
- 문자열[i]가 '('와 같으면
- 스택이 비어 있지 않으면
- 거짓을 반환
- 참 반환
- 메인 방법에서 다음을 수행하십시오 -
- is_balanced_parenthesis(s + t)가 참이면
- 참 반환
- is_balanced_parenthesis(t + s)를 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def is_balanced_parenthesis(string): stack = [] for i in range(len(string)): if string[i] == '(': stack.append(string[i]) else: if len(stack) == 0: return False else: stack.pop() if len(stack) > 0: return False return True def solve(s, t): if is_balanced_parenthesis(s + t): return True return is_balanced_parenthesis(t + s) s = "()()))" t = "()(()(" print(solve(s, t))
입력
"()()))", "()(()("
출력
True