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