백준 #2504 괄호의 값
코드
import sys
# sys.stdin = open("input.txt")
input = sys.stdin.readline
def check():
stack = []
for x in s:
if x == "(":
stack.append(x)
elif x == "[":
stack.append(x)
elif x == ")":
if stack:
if stack[-1] == "(":
stack.pop()
else:
return False
else:
return False
elif x == "]":
if stack:
if stack[-1] == "[":
stack.pop()
else:
return False
else:
return False
if stack:
return False
else:
return True
def solve():
global idx
idx += 1
if s[idx] in dict:
idx += 1
return dict[s[idx - 1]]
temp = 0
while idx < len(s):
if s[idx] in dict:
break
temp += solve()
idx += 1
return temp * dict[s[idx - 1]]
s = list(input().rstrip())
if not check():
print(0)
exit()
dict = {")": 2, "]": 3}
answer = 0
idx = 0
while idx < len(s):
answer += solve()
print(answer)
풀이
괜찮은 괄호인지 확인하는 함수 check와 괜찮은 괄호일 때 값을 구하는 solve 함수 두개로 구현했다. 스택 문제가 오랜만?이라 그런지 check함수에서 index에러를 3번 정도 발생시킨거 같다 ㅎㅎ solve 함수는 재귀적으로 구현했다. 여는 괄호와 닫는 괄호가 있을 때 check함수를 통과한 상태라면 닫는 괄호에만 신경을 써줘도 되기 때문에 idx를 1씩 늘려주는 코드를 넣어주었다. 푸는데 꽤 걸린 문제당..골드급은 되는 듯??
댓글남기기