문제 5291 · 메가 V
대여소 설정 합계
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
공유 자전거 운영 서버는 대여소 설정을 JSON과 비슷한 키-값 문자열로 저장한다. 설정 전체는 중괄호로 감싼 하나의 객체이다. 객체는 쉼표로 구분된 0개 이상의 항목으로 이루어지고, 각 항목은 키:값 형태이다. 키는 알파벳 소문자 1~8글자이다. 값은 0 이상 10^9 이하의 정수(0 이외에는 앞에 0이 붙지 않음)이거나 또 다른 객체이다. 정수는 해당 구역에서 대여 가능한 자전거 수를 뜻한다. 문자열에는 공백이 없으며, 객체는 얼마든지 깊게 중첩될 수 있다. 같은 객체 안에 같은 키가 여러 번 나오면 문자열에서 가장 나중에 나온 항목만 유효하다. 앞에 나온 항목은 값이 정수이든 객체이든 통째로 버려지며, 서로 합쳐지지 않는다. 경로는 키를 마침표로 이어 붙인 문자열이며 최상위 객체에서 시작해 한 단계씩 내려간다. 경로가 가리키는 값이 정수이면 그 정수가 답이다. 객체이면 그 객체 안에 (유효한 항목만 기준으로) 중첩된 모든 정수의 합이 답이며, 빈 객체의 합은 0이다. 경로 중간에 없는 키가 있거나, 정수 값 아래로 더 내려가야 하면 답은 -1이다. 설정 문자열과 Q개의 경로가 주어질 때, 각 경로의 답을 구하시오.
입력
첫 줄에 설정 문자열 S가 주어진다. S의 길이는 2 이상 150,000 이하이며 위에서 설명한 형식을 지킨다. 둘째 줄에 질의 수 Q(1 ≤ Q ≤ 20,000)가 주어진다. 이어지는 Q개의 줄에 경로가 하나씩 주어진다. 각 경로는 1개 이상의 키로 이루어지고 길이는 100 이하이다.
출력
각 질의의 답을 한 줄에 하나씩 순서대로 출력한다.
예제 입력 1
{a:{b:3,c:{d:4,e:5}},f:7,a:{b:1,g:{}}}
6
a
a.b
a.c
a.g
f
f.x
예제 출력 1
1 1 -1 0 7 -1
예제 입력 2
{k:5,k:{m:2},k:9}
2
k
k.m
예제 출력 2
9 -1
예제 입력 3
{s:{t:{u:2,v:3},w:10},sz:{}}
3
s
s.t
sz
예제 출력 3
15 5 0
힌트 펼치기
- 스택으로 객체를 열고 닫으며 각 객체의 합을 함께 관리한다.
- 같은 키가 다시 나오면 이전 값의 합을 부모의 합에서 빼고 새 값을 넣는다.
- 객체는 닫히는 순간에 부모에 붙이면 합이 완성된 상태이다.
알고리즘 분류
구현스택파싱해시풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |