대괄호 문자열(둥근, 둥근 모양, 정사각형)이 있다고 가정하고 대괄호가 균형을 이루는지(정형화된) 여부를 확인해야 합니다.
따라서 입력이 s ="([()()]{[]})()"와 같으면 출력은 True
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 스택 :=새 목록
- d :=키-값 쌍이 있는 해시 맵('}', '{'),(')','('), (']', '[')
- s의 각 문자 c에 대해 다음을 수행합니다.
- c가 '}])' 중 하나이면
- 스택이 비어 있거나 스택의 맨 위가 d[c]와 같지 않으면
- 거짓을 반환
- 스택에서 팝
- 스택이 비어 있거나 스택의 맨 위가 d[c]와 같지 않으면
- 그렇지 않으면
- c를 스택에 푸시
- c가 '}])' 중 하나이면
- 스택이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): stack = [] d = {'}': '{',')': '(',']': '['} for c in s: if c in '}])': if not stack or stack[-1] != d[c]: return False stack.pop() else: stack.append(c) return not stack ob = Solution() print(ob.solve("([()()]{[]})()"))
입력
"([()()]{[]})()"
출력
True