만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

I LOVE JavaScript

면접 대비

시간 제한2초메모리 제한1024 MB

요약
중첩된 ASON 문자열이 주어졌을 때 전체 크기를 바이트 단위로 구합니다. 정수는 8바이트, 문자열은 길이에 12를 더한 크기, 객체는 추가로 8바이트를 차지합니다.
난이도

쉬움10점 중 3점

유형
스택, 구현
정답자
아직 제출이 없습니다

문제

웹에서 데이터를 주고받을 때 가장 많이 쓰는 형식은 JSON(JavaScript Object Notation)이다. 프론트엔드 개발자 설영이는 자바스크립트가 싫어서 자신만의 방식으로 데이터를 표기하기로 했다. 그 방식이 ASON(AGCU Script Object Notation)이다. ASON 객체는 객체의 정보를 담은 대괄호([ ])로 표기한다. 다음 형식으로 쓴다.

[ (원소) (원소) (원소) ... (원소) ]

원소로 허용되는 것은 양의 정수의 표기, 문자열의 표기, 또는 다른 ASON 객체의 표기다. 원소와 원소 사이, 원소와 대괄호 사이에는 스페이스 문자(' ')가 하나씩 반드시 있어야 한다. 그 밖의 공백 문자는 허용하지 않는다. 원소가 하나도 없는 빈 ASON 객체는 [ ]로 표기한다. 대괄호 사이에 스페이스 문자가 하나 들어간다는 점에 유의하시오.

각 자료형은 다음과 같이 표기한다.

  • 양의 정수: 십진법으로 11자 이상 1717자 이하의 숫자로 쓴다. 가장 높은 자리에는 0이 올 수 없다.
  • 문자열: 11자 이상의 알파벳(a, b, ..., z, A, B, ..., Z)으로 쓴다. 대문자와 소문자를 섞어 쓸 수 있다. 알파벳 이외의 문자는 사용할 수 없다.

ASON 객체는 원소가 나열된 순서를 중요하게 본다. 따라서 원소의 순서가 다른 두 객체는 서로 다른 ASON 객체이고, 하나의 ASON 객체를 표현하는 방법은 하나뿐이다. 어떤 문자열 SS에 대응되는 ASON 객체가 존재하면 SS를 ASON 객체의 유효한 표기라고 한다.

ASON 객체의 용량은 다음과 같이 계산한다.

  • (해당 ASON 객체가 소유한 모든 원소의 용량의 합) +8+ 8byte

양의 정수 원소의 용량은 8byte이고, 문자열 원소의 용량은 (문자열의 길이) +12+ 12byte이다. 빈 ASON 객체는 다른 원소를 소유하지 않으므로 8byte를 차지한다. ASON 객체의 유효한 표기가 주어지면, 그 객체의 용량을 계산하는 프로그램을 작성하시오.

입력

한 줄에 ASON 객체의 유효한 표기가 주어진다. 주어지는 문자열의 길이는 스페이스 문자를 제외하고 15 00015\,000 이하이다.

출력

주어진 표기에 대응되는 ASON 객체의 용량을 byte 단위의 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    [ 1 [ 2 3 ] foo [ 7 bar ] [ ] [ [ ] ] ]
    
    예상 출력
    110
    
  2. 예제 2

    입력
    [ [ runtime is short ] you [ need [ cpp 20 ] ] ]
    
    예상 출력
    136
    
  3. 예제 3

    입력
    [ [ [ [ [ [ [ aGCu ] ] ] ] ] ] 998244353998 ]
    
    예상 출력
    80