책너두 - 알고리즘 챌린지[12/20]

Moon·2023년 7월 27일
0
post-thumbnail

어제의 문제 : 압축

면접 준비한다고 어제 알고리즘을 풀지 못 했다 ㅠㅠ.. 오늘이나마 급하게 풀고 올리는..!


오늘 문제는 스택 문제였다.

이전에 이와 비슷한 문제를 풀었던 기억이 있어서 문자열을 한 번 순회하며 '('가 나올 때 값을 저장하고, ')'가 나올 때 값을 계산하는 방식으로 풀려고 했다.

문제는 ( 이후 처음 나오는 값과 그 다음에 나오는 값을 어떻게 처리해야할지 몰라 실패했다.

결국에 다른 분 풀이를 보고 해결할 수 있었다..

구현에 좀 더 노력해야겠다!

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)
profile
안녕하세요. Moon입니다!

0개의 댓글