Search

Decode String

문제 설명 : 제공된 압축 문자열을 평문 문자열로 변환하는 문제이다.
풀이 방법
우선 []가 중첩으로 보고 재귀를 생각해야한다.
그래서 우선 중첩이 없는 문자열을 먼저 처리하도록 구현한 후 재귀를 넣었다.
처리된 문자는 바로 문자열로 안더하고, stack에 넣어서 최종적으로 괄호가 없는 스택이 완성되면 join 으로 합쳐주었다.
시간복잡도 : O(N)O(N)
성공 코드
class Solution: def decodeString(self, s: str) -> str: stack = [] num_set = {str(num) for num in range(10)} temp = "" for ch in s: if ch == ']': # [] 사이에 들어가는 압축 문자 구하기 while stack: pop_ch = stack.pop() if pop_ch == '[': break temp = pop_ch + temp # [] 사이 압축 문자 반복 횟수 구하기 count = "" while stack: if stack[-1] not in num_set: break count = stack.pop() + count # [] 괄호 사이에 존재하는 문자열을 재귀 처리 stack.append(int(count) * self.decodeString(temp)) temp = "" else: stack.append(ch) return "".join(stack)
Python
복사