어제의 문제 : 압축
면접 준비한다고 어제 알고리즘을 풀지 못 했다 ㅠㅠ.. 오늘이나마 급하게 풀고 올리는..!
오늘 문제는 스택 문제였다.
이전에 이와 비슷한 문제를 풀었던 기억이 있어서 문자열을 한 번 순회하며 '('가 나올 때 값을 저장하고, ')'가 나올 때 값을 계산하는 방식으로 풀려고 했다.
문제는 ( 이후 처음 나오는 값과 그 다음에 나오는 값을 어떻게 처리해야할지 몰라 실패했다.
결국에 다른 분 풀이를 보고 해결할 수 있었다..
구현에 좀 더 노력해야겠다!
import sys
s = sys.stdin.readline().strip()
cnt_stack = []
cnt = 0
_last = ""
for tmp in s :
if tmp == "(" :
cnt_stack.append([cnt-1, _last])
cnt = 0
elif tmp == ")" :
_sum = cnt_stack.pop()
cnt = cnt * _sum[1] + _sum[0]
else :
cnt += 1
_last = int(tmp)
print(cnt)