문제
- 난이도: 골드5
- 알고리즘 분류: 구현, 자료구조, 스택
- 요약: 괄호값을 정의한대로 계산하여 출력하기
풀이
case 분류
1. 열린 괄호
stack에 추가하기(append 연산)
temp 변수에 해당 괄호열의 값 곱하기
2. 닫힌 괄호
- 스택이 비어있거나 스택의 top 값과 짝이 맞지 않을 경우 -> 올바르지 못한 괄호열
- 짝이 맞고 직전에 짝이 맞는 열린 괄호일 경우 -> result 값 업데이트
- bracket = '()[]' 일 경우 result += 2; result += 3
- bracket = '[()]' 일 경우 [()에서 ()를 스택에서 제거 후 temp = 3*2; ]에서 result += 6
- 짝이 맞을 경우 -> stack에서 제거하고(pop 연산) temp 값을 해당 괄호열의 값으로 나누기
모든 문자 확인 이후 스택에 값이 남아있으면 짝이 맞지 않은 경우 -> 올바르지 못한 괄호열
코드
bracket = list(input())
stack = []
res = 0
temp = 1
for i in range(len(bracket)):
if bracket[i] == '(':
stack.append('(')
temp *= 2
elif bracket[i] == '[':
stack.append('[')
temp *= 3
elif bracket[i] == ')':
if not stack or stack[-1] != '(':
res = 0
break
elif bracket[i-1] == '(':
res += temp
stack.pop()
temp //= 2
elif bracket[i] == ']':
if not stack or stack[-1] != '[':
res = 0
break
elif bracket[i-1] == '[':
res += temp
stack.pop()
temp //= 3
if stack:
res = 0
print(res)
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 15685 드래곤 커브 python 풀이 (0) | 2024.06.28 |
---|---|
[백준] 2636 치즈 python 풀이 (0) | 2024.06.28 |
[백준] 13459 구슬 탈출 python 풀이 (0) | 2024.06.28 |
[백준] 3190 뱀 python 풀이 (2) | 2024.06.27 |
[백준] 17144 미세먼지 안녕! python 풀이 (0) | 2024.06.27 |