https://www.acmicpc.net/problem/2504

 

2504번: 괄호의 값

4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X

www.acmicpc.net


내 풀이

def solution():
    n = input().strip()
    stack = []
    sums=1
    result=0
    
    for i in range(len(n)):
        if n[i] == '[':
            sums *=3
            stack.append(n[i])
            
        elif n[i]=='(':
            sums *=2
            stack.append(n[i])
            
        elif n[i] == ']':
            if len(stack) == 0 or stack[-1] =='(':
                result=0
                break

            elif n[i-1] =='[':
                result += sums
                
            stack.pop()
            sums //=3
        else:
            if len(stack)==0 or stack[-1]=='[':
                result=0
                break
            elif n[i-1]=='(':
                result +=sums
            stack.pop()  
            sums //=2
    
    if stack:
        result= 0
    
    print(result)
(solution())


다른사람의 풀이

 



1학년때 이거관련해서 과제한적 있었는데 이렇게 오래걸릴줄 상상도 못했다;

 

최초에 고려하지 못했던 부분이 약 2개정도 있는데

첫째, pop은 무조건 해야한다. 처음에는 맞는 괄호만 나올때만 pop했는데 그러면 나중에 쌓여서 안됨 -

둘째,여는 괄호만 나올때도 고려해야한다 그거 고려안해서 10분동안 잡고있었음

 

'취준 > 백준' 카테고리의 다른 글

1939(중량제한) - 파이썬  (0) 2022.11.01
10816(숫자카드 2) - 파이썬  (0) 2022.10.27
1806(부분합) - 파이썬  (0) 2022.10.24
1238 - 파이썬  (0) 2022.10.24
25755 - 파이썬  (0) 2022.10.21

+ Recent posts