Skip to content

Instantly share code, notes, and snippets.

@dongwooklee96
Created July 20, 2021 13:35
Show Gist options
  • Select an option

  • Save dongwooklee96/44a766b0e5493b87bcab5d64096a11d6 to your computer and use it in GitHub Desktop.

Select an option

Save dongwooklee96/44a766b0e5493b87bcab5d64096a11d6 to your computer and use it in GitHub Desktop.
4.3
"""
문제 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