📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님'을 보고 작성되었습니다.
😎문제 : https://leetcode.com/problems/valid-parentheses/
괄호로 된 입력값이 올바른지 판별하라.
class Solution:
def isValid(self, s: str) -> bool:
stack = []
table = {
']':'[',
')': '(',
'}': '{',
}
for i in s:
if i not in table:
stack.append(i)
elif not stack or table[i] != stack.pop():
return False
return len(stack) == 0
- 매핑을 이용해서 테이블이라는 딕셔너리를 통해 (,[,{ 는 stack에 넣어주고 ),],}를 만날 때 pop해주며 결과적으로 stack에 남은 요소가 없을 때 true 값을 돌려주는 구조로 코드가 구현 되어있다.
- 이때 스택이 비어있는지 안 비어있는지 역시 판단해주며 True False를 결정하게 해준다.
- 중요! 딕셔너리는 키를 가지고 데이터를 찾기 때문에 [ ( { 의 경우엔
매핑(mapping)은 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 하나씩 짝지어 저장하는 데이터 구조다.
'자료구조와 알고리즘 > 🥑알고리즘' 카테고리의 다른 글
[알고리즘][스택 & 큐] - 3. 일일 온도 (0) | 2022.03.02 |
---|---|
[알고리즘][스택 & 큐] - 2. 중복 문자 제거 (0) | 2022.03.01 |
[알고리즘][연결 리스트] - 5. 페어의 노드 스왑 (0) | 2022.02.26 |
[알고리즘][연결 리스트] - 4. 두 수의 덧셈 (0) | 2022.02.26 |
[알고리즘][연결 리스트] - 3. 역순 연결 리스트 (0) | 2022.02.26 |