반응형
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에 누적하는 식으로 푼다.