😎풀이

  1. 중첩 구조가 아닌 경우 바로 숫자 반환
  2. s 순회
    2-1. [로 depth가 추가될 경우 NestedInteger 새로 생성하여 중첩
    2-2. 음수 부호 혹은 정수가 나올 경우 현재 숫자 문자열에 추가
    2-3. 숫자가 종료되는 ,혹은 ]가 나오는 경우 현재까지의 숫자를 현재 중첩에 추가
    2-4. 현재 중첩이 종료되는 ]가 확인될 경우 현재 중첩을 이전 중첩의 하위 요소로 추가
  3. 최종 중첩 클래스 반환
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()
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글