반응형
array = input()
tmp = 1
answer = 0
stack = []
for i in range(len(array)):
if array[i] == "(":
stack.append(array[i])
tmp = tmp * 2
elif array[i] == "[":
stack.append(array[i])
tmp = tmp * 3
elif array[i] == ")":
if not stack or stack[-1] == "[":
answer = 0
break
if array[i-1] == "(": # 제일 안쪽 괄호인 경우 더해주기
answer = answer + tmp
stack.pop()
tmp = tmp // 2
else:
if not stack or stack[-1] == "(":
answer = 0
break
if array[i-1] == "[": # 제일 안쪽 괄호인 경우 더해주기
answer = answer + tmp
stack.pop()
tmp = tmp // 3
if stack:
print(0)
else:
print(answer)
스택 괄호 유형 뒤에서부터 연산해야 된다고 생각하지 말자!!!!!!!!
고정관념을 버려
예제를 통해 연산 과정을 생각해
반응형
'취준 > 코딩테스트' 카테고리의 다른 글
프로그래머스 (python): 문자열 내림차순으로 배치하기 (0) | 2024.08.23 |
---|---|
다시 풀어볼 알고리즘 (0) | 2024.08.08 |
백준 14888 (python): 연산자 끼워넣기 (0) | 2024.08.05 |
프로그래머스 (python): 정수 제곱근 판별 (0) | 2024.08.02 |
백준 2309 (python): 일곱 난쟁이 (0) | 2024.08.01 |