[프로그래머스 | Python] 올바른 괄호

게으른 완벽주의자·2023년 1월 25일
0

프로그래머스

목록 보기
8/83
post-custom-banner

프로그래머스_올바른 괄호

코딩테스트 준비를 조금이라도 해 본 사람은 한 번쯤이라도 풀어봤을법한 문제다

내 답안 코드

def solution(s):
    answer = True
    
    cnt = 0
    for i in s:
        if i=="(":
            cnt+=1
        elif i==")":
            cnt-=1
        
        if cnt<0:
            answer = False
            break
    
    if cnt!=0:
        answer = False

    return answer

기존에 알고 있던 방법대로 풀어서 정확성/효율성 전부 통과하기는 했는데, 효율성 문제가 조금 오래걸렸다. 아마 s 길이가 10^5 이하여서 그런 것 같다
그래서 문제 유형도 스택/큐라고 나와있길래 스택/큐로 푸는 방법을 검색해봤다

추가 답안 코드

def solution(s):

    stack = []
    for i in s:
        if i=="(":
            stack.append(i)
        else:
            #짝이 맞지 않는 경우
            if not stack:
                return False                
                break
            #(가 이미 들어있기 때문에 짝이 맞는 경우
            else:
                stack.pop()
    
    answer = (stack==[])
    return answer

stack에 넣고 빼는 과정이 cnt를 더하고 빼는 연산과정보다 더 빠른건지, 이전 풀이보다 더 빨리 답이 나왔다
더 긴 문자열이 나올수도 있으니 이 방법도 외워둬야겠다!

profile
데이터를 공부하고 있습니다
post-custom-banner

0개의 댓글