티스토리 뷰

반응형

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

 

2504번: 괄호의 값

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

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 구현
  • 자료 구조
  • 스택
  • 재귀

 


 

⊙ 문제 접근 과정

 

제일 먼저 스택을 생각하며 괄호를 구현해준다.

 

괄호가 올바르게 들어왔는지 코드를 작성해준 후, 계산을 구현해준다.

 

()일 때, 곱하기 2

[]일 때, 곱하기 3

 

그리고 더하기의 경우를 구현해준다.

이전 괄호가 어떤 괄호인지 체킹 해주면 된다.

 

자세한 건 아래 코드를 통해 확인하자


 

⊙ 문제 풀이

 

Parentheses = []
Brackets = []

inputValue = input()
flag = True
result = 0
coeff = 1

for i in range(len(inputValue)):
    if inputValue[i] == '(':
        Parentheses.append(i)
        coeff*=2
    elif inputValue[i] == '[':
        Brackets.append(i)
        coeff*=3
    elif inputValue[i] == ')':
        if Parentheses:
            if inputValue[i-1] == '(':
                result+=coeff
            Parentheses.pop()
            coeff//=2
        else:
            flag = False
            break
    else:
        if Brackets:
            if inputValue[i-1] == '[':
                result+=coeff
            Brackets.pop()
            coeff//=3
        else:
            flag = False
            break

if not Parentheses and not Brackets and flag:
    print(result)
else:
    print(0)

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함