99클럽 코테 스터디 8일차 TIL (올바른 괄호) - 프로그래머스

말하는 감자·2024년 8월 5일
0

99클럽 3기

목록 보기
9/42
post-thumbnail

1. 오늘의 학습 키워드

  • 스택

2. 문제: 올바른 괄호

문제 설명

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

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

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

제한사항

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

입출력 예

sanswer
"()()"true
"(())()"true
")()("false
"(()("false

입출력 예 설명

입출력 예 #1,2,3,4

문제의 예시와 같습니다.


3. 나의 풀이

접근 방법

“(”와 “)”의 짝이 잘 맞아야 한다.

“(”은 무조건 먼저 나와야 하고 마지막은 무조건 “)”이 나와야 한다.

빈 리스트 a가 있다 하자. a = []

입력 (s)에서 맨처음 “(”가 나오면 a에 append한다. 만약 “(”가 아니라면 (”)”이면), a가 비어있을 경우에는 False 리턴, 비어있지 않을 경우에는 ans에 있는 값을 빼는것이다. 그렇게 되면 “(”와 “)”은 짝을 이루게 되는 것이다.

코드를 구현하면 다음과 같다.

def solution(s):
    
    ans = []
    
    for i in s:
        if i == '(':
            ans.append(i)
        else:
            if not ans:
                return False
            else:
                ans.pop()
                
    return True if not ans else False

4. 결론

오늘 푼 문제는 7일차 문제와 동일하게 스택 자료구조를 활용해서 푸는 문제이다. 오늘 문제는 Lv. 2라고 하는데 오히려 어제 문제보다 더 쉬운것 같았다.

읽어주셔서 감사합니다!

profile
할 수 있다

0개의 댓글