시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 1024 MB | 300 | 237 | 194 | 83.262% |
웹에서 데이터를 주고받기 위해 가장 많이 사용하는 포맷은 JSON(JavaScript Object Notation)이다. 그러나 프론트엔드 개발자인 설영이는 자바스크립트가 싫어서 자신만의 방법으로 데이터를 표기하기로 결정하였다. 그 방법은 바로 ASON(AGCU Script Object Notation)이다. ASON은 대괄호([ ]
) 안에 객체에 대한 정보를 표기하는 방법이다. ASON 객체는 다음과 같이 표기한다.
[ (원소) (원소) (원소) ... (원소) ]
이때 (원소)로 허용되는 것은 양의 정수 자료형의 표기, 문자열 자료형의 표기 또는 다른 ASON 객체의 표기이다. 원소와 원소 사이, 원소와 대괄호 사이에는 하나의 스페이스 문자(' '
)가 반드시 들어가 있어야 하며, 기타 모든 공백 문자는 허용하지 않는다. 또한 어떤 원소도 포함하지 않는 빈 ASON 객체가 있을 수 있는데, 이 객체는 [ ]
로 표기한다. 대괄호 사이에 하나의 스페이스 문자가 들어가 있음에 유의하시오.
각각의 자료형은 다음과 같이 표기한다.
0
이 올 수 없다.a, b, ..., z, A, B, ..., Z
)을 사용하여 표기한다. 대문자와 소문자가 혼용될 수 있다. 알파벳 이외의 문자는 사용될 수 없다. ASON 객체는 원소가 나열된 순서를 중요하게 생각하기 때문에, 원소가 나열된 순서가 다른 두 객체는 다른 ASON 객체이다. 따라서 하나의 ASON 객체를 표현하는 방식은 하나뿐이다. 어떤 문자열 $S$에 대응되는 하나의 ASON 객체가 존재한다면, $S$를 ASON 객체의 유효한 표기라 한다.
ASON 객체가 하나 있다면, 그 객체가 메모리에서 얼마큼의 용량을 차지하는지를 계산할 수 있다. ASON 객체의 용량은 다음과 같이 계산한다.
또한 양의 정수 자료형 원소의 용량은 $8$byte, 문자열 자료형 원소의 용량은 (문자열의 길이 $+ 12$byte)다. 빈 ASON 객체는 어떤 다른 원소도 소유하지 않으므로 $8$byte만큼의 용량을 차지한다. ASON 객체의 유효한 표기가 주어지면, 그 객체의 용량을 계산하는 프로그램을 작성하시오.
한 줄에 걸쳐, ASON 객체의 유효한 표기가 주어진다. 주어지는 문자열의 길이는 스페이스 문자를 제외하고 $15\,000$ 이하이다.
주어진 표기에 대응되는 ASON 객체의 용량이 몇 byte인지를 하나의 정수로 출력한다.
[ 1 [ 2 3 ] foo [ 7 bar ] [ ] [ [ ] ] ]
110
[ [ runtime is short ] you [ need [ cpp 20 ] ] ]
136
[ [ [ [ [ [ [ aGCu ] ] ] ] ] ] 998244353998 ]
80
이 예제에 등장하는 정수는 32bit 정수 자료형에 담길 수 없다.
Contest > BOJ User Contest > 와쿠(AGCU)컵 > 제1회 와쿠(AGCU)컵 K번