본문 바로가기

Language/Python

[파이썬][백준 2504][문자열] 괄호의 값 - 컴도리돌이

728x90

 

2504번: 괄호의 값

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

www.acmicpc.net


풀이 방법

 

1. 알고리즘 분류는 스택으로 되어있었지만 해당 문제를 문자열로 해결하고 싶어서 스택을 이용하지 않았다.

2. '(' 과 ')'의 각각의 개수가 다를 경우 또는 '[' 과 ']'의 각각의 개수가 다를 경우 0을 반환해주었다. (올바른 괄호 x)

3. '()' 는 2, '[]'는 3이기에 해당 값들을 replace를 통해서 '+2','+3'으로 바꿔주었다.

4.  3번을 처리해주고 나머지 '(' ,')'은 각각 '+(', ')*2'로 처리해주었다.

5. 마지막으로 '[',']'은 각각 '+(', ')*3'으로 변경해주었다.

6. 3-5 까지의 연산 처리 된 str을 eval 함수를 통해 출력해주었다. 예외 처리가 있을 경우 0으로 처리. (예외가 발생하는 괄호처리가 올바르지 않았다는 뜻이다.

 


풀이 코드

import sys
string = sys.stdin.readline().strip()
if string.count('(') != string.count(')') or string.count('[') != string.count(']') :
  print(0)
else :
  try :
    print(eval(string.replace('()','+2').replace('[]','+3').replace('(','+(').replace(')',')*2').replace('[','+(').replace(']',')*3')))
  except :
    print(0)