BOJ2504 괄호의 값

문자열의 현재가 닫는 괄호이고 이전 괄호의 값이 짝이 맞는 닫는 괄호라면 그때 tmp의 값을 더해준다.

import sys
input = sys.stdin.readline

blocks = input().strip()

st = []
ans = 0
tmp = 1
for i in range(len(blocks)):
	if blocks[i] in '([':
		if blocks[i] == '(':
			tmp *= 2
		else:
			tmp *= 3
		st.append(blocks[i])
		continue

	if st:
		if st[-1] == '(':
			if blocks[i] == ')':
                # 여기가 blocks[i-1]인 것이 중요
				if blocks[i-1] == '(':
					ans += tmp
				st.pop()
				tmp //= 2
			else:
				print(0)
				sys.exit()
		elif st[-1] == '[':
			if blocks[i] == ']':
                # 여기가 blocks[i-1]인 것이 중요
				if blocks[i-1] == '[':
					ans += tmp
				st.pop()
				tmp //= 3
			else:
				print(0)
				sys.exit()

	else:
		if blocks[i] in ')]':
			print(0)
			sys.exit()

if st:
	print(0)
else:
	print(ans)

좋은 웹페이지 즐겨찾기