
😎풀이
- 중첩 구조가 아닌 경우 바로 숫자 반환
s 순회
2-1. [로 depth가 추가될 경우 NestedInteger 새로 생성하여 중첩
2-2. 음수 부호 혹은 정수가 나올 경우 현재 숫자 문자열에 추가
2-3. 숫자가 종료되는 ,혹은 ]가 나오는 경우 현재까지의 숫자를 현재 중첩에 추가
2-4. 현재 중첩이 종료되는 ]가 확인될 경우 현재 중첩을 이전 중첩의 하위 요소로 추가
- 최종 중첩 클래스 반환
function deserialize(s: string): NestedInteger {
if (s[0] !== '[') {
return new NestedInteger(Number(s));
}
const stack: NestedInteger[] = []
let numStr = ''
for (let i = 0; i < s.length; i++) {
const char = s[i]
if (char === '[') {
stack.push(new NestedInteger())
} else if (char === '-' || (char >= '0' && char <= '9')) {
numStr += char
} else if (char === ',' || char === ']') {
if (numStr !== '') {
stack[stack.length - 1].add(new NestedInteger(Number(numStr)))
numStr = ''
}
if (char === ']' && stack.length > 1) {
const completedList = stack.pop()
stack[stack.length - 1].add(completedList)
}
}
}
return stack.pop()
}