level2_올바른 괄호(스택/큐)
2024. 2. 21. 22:41ㆍ파이썬_알고리즘(코딩테스트)/level2

내가 제출한 코드
def solution(s):
stack = []
for i in s:
if i == '(':
stack.append(i)
else:
if stack == []: # 왼쪽 괄호가 없다면
return False
else:
stack.pop()
if stack != []: # 다 끝났는데 왼쪽 괄호가 스택에 남아있을경우
return False
return True
다른 사람이 제출한 코드
def is_pair(s):
st = list()
for c in s:
if c == '(':
st.append(c)
if c == ')':
try:
st.pop()
except IndexError:
return False
return len(st) == 0
- 만약에 c가 닫는 괄호 ")"라면, 스택에서 가장 마지막에 추가된 여는 괄호를 제거한다.
- 이 때, 스택이 비어 있어서 pop연산이 'IndexError'를 발생시키녀, 올바르지 않은 괄호 쌍이 있음을 의미하므로 False를 반환한다.
- 모든 문자를 처리한 후, 스택이 비워져 있으면, 모든 여는 괄호에 대응하는 닫는 괄호가 있었음을 의미하므로 True를 반환한다.
'파이썬_알고리즘(코딩테스트) > level2' 카테고리의 다른 글
| level2_다음 큰 숫자 (0) | 2024.02.27 |
|---|---|
| level2_숫자의 표현 (0) | 2024.02.25 |
| level2_이진 변환 반복하기 (0) | 2024.02.22 |
| level2_최솟값 만들기 (1) | 2024.02.19 |
| level2_최댓값과 최솟값 (0) | 2024.02.05 |