내맘대로IT/Python

백준 파이썬 2504 괄호의 값

맛집여행 2023. 12. 1. 22:00
728x90
300x250

bracket = list(input())
ans = 0
tmp =1
stack = []

for i in range(len(bracket)):
    if bracket[i] == '(':
        stack.append(bracket[i])
        tmp*=2

    elif bracket[i] == '[':
        stack.append(bracket[i])
        tmp*=3

    elif bracket[i] == ')':
        if not stack or stack[-1]!='(':
            ans =0
            break
        if bracket[i-1] =='(' :
            ans+=tmp
        stack.pop()
        tmp//=2
    else:
        if not stack or stack[-1]!='[':
            ans =0
            break
        if bracket[i-1] =='[' :
            ans+=tmp
        stack.pop()
        tmp//=3
if stack:
    print(0)
else:
    print(ans)

1.bracket 에 입력받을 괄호 값들을 list로 저장(bracket이 괄호라는 뜻)

2.ans는 계산된 결과값

3.tmp = (일때 2, [일 때 3을 곱하기 위햇 초기값 1

4.stack에는 '(','[' 일때만 저장하기 위한 list

5.괄호의 수만큼 for문

6.만약 '(' 일 경우에는 stack에 저장하고 결과값에 x2

7.만약'[' 일 경우에는 stack에 저장하고 결과값에 x3

8.만약 ')' 일 경우 이면서, stack에 저장된 괄호가 없거나, 마지막이 '('아닐 경우에는 0을 출력하고 빠져나옴

i-1번쨰가 '(' 일 경우 결과값에 tmp를 더해주고 다시 tmp를 2로 나눠줌으로써 초기화

9. 만약 ']' 일 경우 이면서, stack에 저장된 괄호가 없거나, 마지막이 '['아닐 경우에는 0을 출력하고 빠져나옴

i-1번쨰가 '[' 일 경우 결과값에 tmp를 더해주고 다시 tmp를 3로 나눠줌으로써 초기화

10.stack에 남는게 있으면 짝이 안맞기 떄문에 0 리턴

11.그게 아니라면 ans출력

 

728x90

'내맘대로IT > Python' 카테고리의 다른 글

백준 파이썬 1700 멀티탭 스케줄링  (0) 2023.12.12
백준 14719 빗물  (1) 2023.12.06
백준 파이썬 14888 연산자끼워넣기  (0) 2023.11.29
백준 파이썬1978 소수찾기  (0) 2023.11.28
백준 파이썬 2581 소수  (1) 2023.11.27