문제

https://school.programmers.co.kr/learn/courses/30/lessons/12909

풀이

시도 1

스택을 활용합니다. 빈 스택일때 (가 들어오면 바로 False를 리턴해야 시간초과가 나지 않습니다.

solution.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def solution(s):
    stack = []
    if s[-1] == '(':
        return False

    for i in s:
        if i == '(':
            stack.append(i)
        else:
            if stack == []:
                return False
            else:
                stack.pop()

    return stack == []


다른사람 풀이

solution.py
1
2
3
4
5
6
7
def is_pair(s):
    x = 0
    for w in s:
        if x < 0:
            break
        x = x+1 if w=="(" else x-1 if w==")" else x
    return x==0