https://www.acmicpc.net/problem/2504
내 풀이
def solution():
n = input().strip()
stack = []
sums=1
result=0
for i in range(len(n)):
if n[i] == '[':
sums *=3
stack.append(n[i])
elif n[i]=='(':
sums *=2
stack.append(n[i])
elif n[i] == ']':
if len(stack) == 0 or stack[-1] =='(':
result=0
break
elif n[i-1] =='[':
result += sums
stack.pop()
sums //=3
else:
if len(stack)==0 or stack[-1]=='[':
result=0
break
elif n[i-1]=='(':
result +=sums
stack.pop()
sums //=2
if stack:
result= 0
print(result)
(solution())
다른사람의 풀이
1학년때 이거관련해서 과제한적 있었는데 이렇게 오래걸릴줄 상상도 못했다;
최초에 고려하지 못했던 부분이 약 2개정도 있는데
첫째, pop은 무조건 해야한다. 처음에는 맞는 괄호만 나올때만 pop했는데 그러면 나중에 쌓여서 안됨 -
둘째,여는 괄호만 나올때도 고려해야한다 그거 고려안해서 10분동안 잡고있었음
'취준 > 백준' 카테고리의 다른 글
1939(중량제한) - 파이썬 (0) | 2022.11.01 |
---|---|
10816(숫자카드 2) - 파이썬 (0) | 2022.10.27 |
1806(부분합) - 파이썬 (0) | 2022.10.24 |
1238 - 파이썬 (0) | 2022.10.24 |
25755 - 파이썬 (0) | 2022.10.21 |