S E P H ' S

[Python] 올바른 괄호 본문

Algorithm/Programmers

[Python] 올바른 괄호

yoseph0310 2021. 8. 23. 21:50
 

코딩테스트 연습 - 올바른 괄호

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은

programmers.co.kr

풀이

1. 스택 원리로 풀이.

2. 첫 괄호가 ')'이라면 바로 False

3. 반복문을 돌면서 '(' 이라면 list에 append.

4. 만일 ')'이라면 먼저, 리스트가 비었는지 먼저 체크하고 비었다면 False를 반환한다.

    -> ex) (())) 과 같은 경우 ')'을 처리하는 부분에서 빈 값에서 pop을 해서 에러가 났었다.

5. 그렇지 않다면 list.pop()을 사용하여 먼저 들어가 있는 '('을 처리

 

def solution(s):
    list = []
    
    # 처음이 ')'인 경우
    if s[0] == ')':
        return False
    
    # 처음이 '('인 경우
    for n in s:
        if n == '(':
            list.append(n)
        else:
            if len(list) == 0:
                return False
            list.pop()
            
    if len(list) == 0:
        return True
    
    else: return False

 

다른 사람의 풀이

비슷한 문제를 에러처리로 풀어낸 것

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​

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 가장 큰 정사각형 찾기  (0) 2021.08.24
[Python] n진수 게임  (0) 2021.08.23
[Python] 다음 큰 숫자  (0) 2021.08.22
[Python] 카펫  (0) 2021.08.08
[Python] 여행 경로  (0) 2021.08.07