코드

def solution(s) : 
    for _ in range(len(s)):
        if '()' in s:
            s = s.replace("()","") # replace를 통해 문자열 내에서 ()를 제거
        if len(s) == 0: # 모두 제거되었다면 즉 )(가 있는 문자열이 없다면 ans = True
            break
    if len(s) == 0:  # 이때 break 구문에서 바로 ans = True넣어주면 오류 발생하여 따로 작성
        ans = True
    else : 
        ans = False # 아니라면 False

    return ans

코드 풀이

Stack

Untitled

<aside> 📌 문자열의 형태로 input값이 주어졌을 때, 대부분 빈 stack을 두고 특정 조건을 만족하면 stack에 각 원소를 추가하는 형태로 풀이

</aside>

Why Stack?

( ( ( ) ) ) 이런 기본적 구조일 때

현재 푼 ( ) 를 빼는 방식은 시간복잡도 측면에서 비효율적

스택은 ( ( ( 열린 괄호 개수가 닫힌 괄호 개수와 동일하면 ) ) )

스택에 넣어서 추가로 계산하거나

or 위의 저 조건 충족하면 바로 pop해서 없애는 방식으로 활용할 수 있으므로