Created
July 20, 2021 13:35
-
-
Save dongwooklee96/44a766b0e5493b87bcab5d64096a11d6 to your computer and use it in GitHub Desktop.
4.3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| """ | |
| 문제 4.3. 유효한 괄호 검증 | |
| - 입력으로 주어지는 문자열은 3가지 괄호의 열고 닫고 만을 포함한다. | |
| - 해당 괄호는 '('와 쌍인 ')' '{'와 쌍인 '}' 마지막으로 '['와 쌍인 ']' 이렇게 괄호로 구성되는 문자열이 있다. | |
| 열고 닫음의 쌍이 정상적인지 확인하라. | |
| ## 제한 사항 | |
| - 문자열 입력이다. | |
| - 괄호는 (), {}, [] 로 구성된다. | |
| - 비어 있는 문자열은 유효하다고 판단한다. | |
| ## 아이디어 (스택) | |
| - 스택을 생성한다. | |
| - 문자열을 순회한다. | |
| - 열림 괄호가 나오면 스택에 넣는다. | |
| - 닫힘 괄호가 나오면, 최근 문자를 꺼내서 쌍이 맞는지를 확인한다. | |
| - 맞지 않으면 바로 False를 반환한다. | |
| - 모든 순회가 끝났다면 True를 반환한다. | |
| """ | |
| def isValid(s: str) -> bool: | |
| stack = [] | |
| paren_map = { | |
| ')': '(', | |
| '{': '}', | |
| '[': ']' | |
| } | |
| for ch in s: | |
| if ch not in paren_map.keys(): | |
| stack.append(ch) | |
| else: | |
| pair = stack.pop() if stack else '' | |
| if paren_map[ch] != pair: | |
| return False | |
| return len(stack) == 0 | |
| if __name__ == '__main__': | |
| strs = input() | |
| print(isValid(strs)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment