Skip to content

Commit cdba57a

Browse files
committed
[BOJ] 2504 괄호의 값 (G5)
1 parent c37d29e commit cdba57a

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

최어진/10주차/260302.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# 백준 2504번: 괄호의 값 (2회차)
2+
3+
import sys
4+
5+
input = sys.stdin.readline
6+
7+
# 1 <= len(string) <= 30
8+
string = list(input().rstrip())
9+
10+
stack = []
11+
answer = 0
12+
balanced = True
13+
14+
braces = list('()[]')
15+
16+
for letter in string:
17+
# print(letter)
18+
if letter == ']':
19+
sums = 0
20+
while stack and stack[-1] not in braces:
21+
sums += stack.pop()
22+
23+
if not stack or stack[-1] != '[':
24+
balanced = False
25+
break
26+
27+
stack.pop() # '['
28+
stack.append(sums * 3 if sums > 0 else 3)
29+
30+
elif letter == ')':
31+
sums = 0
32+
while stack and stack[-1] not in braces:
33+
sums += stack.pop()
34+
35+
if not stack or stack[-1] != '(':
36+
balanced = False
37+
break
38+
39+
stack.pop() # '('
40+
stack.append(sums * 2 if sums > 0 else 2)
41+
42+
else:
43+
stack.append(letter)
44+
45+
# print(stack)
46+
# print()
47+
48+
if not balanced: print(0)
49+
else:
50+
for number in stack:
51+
if number in ['[', ']', '(', ')']:
52+
answer = 0
53+
break
54+
55+
answer += number
56+
print(answer)

0 commit comments

Comments
 (0)