올바른 괄호 (스택)

mason.98·2022년 10월 7일
0

코딩테스트

목록 보기
2/3
  • 문제 설명
    괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.

    예를 들어
    "()()" 또는 "(())()" 는 올바른 괄호입니다.
    ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
    '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고,
    올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    문자열 s의 길이 : 100,000 이하의 자연수
    문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

  • 입출력 예
    "()()" : true
    "(())()" : true
    ")()(" : false
    "(()(" : false

✅ 풀이

def solution(s):
    stack = list()
    for x in s:
        if x=='(':
            stack.append(x)
        else:
            if len(stack)==0:
                stack.append(x)
            if stack and stack[-1]=='(':
                stack.pop()
            
    return True if len(stack)==0 else False
1. '('를 입력받으면 스택에 저장

2-1. ')'이면서, 첫번째 데이터면 스택 저장
2-2. ')'이면서, 스택에 데이터가 존재하고, 스택의 맨 위가 '('이면 '('를 POP

2-1.을 구현하지 않았더니 테스트케이스 2,6번이 오류나서 애먹었다..

profile
wannabe---ing

0개의 댓글