CodingTest/LeetCode

[LeetCode] 394. Decode String, Medium

뜸부깅 2025. 4. 3. 14:52
반응형

1. 문제

  • k[encode_string]형태로 구성된 문자열이 주어질 때, 대괄호 안의 문자를 앞에 숫자만큼 반복해서 문자열을 재생성하여 반환하라.

2. 해결

function decodeString(s: string): string {
    
    const stack = new Array();
    
    for(const char of s) {
        if(char !== ']')
            stack.push(char);
        else {
            let str ='' , multiple = '';

            while(stack[stack.length -1] !== '[') {
                str =  stack.pop() + str;
            }
            stack.pop();
            while(!Number.isNaN(Number(stack[stack.length-1]))) {
                multiple = stack.pop() + multiple;
            }
          
             stack.push(str.repeat(Number(multiple)));
        }

    }
    
    return stack.join('');
};
  • 접근 자체는 잘 한 것 같은데 마지막에 문자열을 누적하고 저장하는 과정을 별도의 변수에 담았더니, 풀리지 않았다.
  • 반복은 for문을 사용하지 말고 repeat을 이용해 반복하고, 결과를 stack에 누적하는 식으로 푼다.