문제 5675 · 기가 II
회의실 설정 파일 합계 조회
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
회의실 예약 시스템의 설정 파일은 키-값 구조로 되어 있다. 최상위는 항상 중괄호로 감싼 객체이고, 객체는 쉼표로 구분한 0개 이상의 항목으로 이루어진다. 각 항목은 '키:값' 꼴이며, 값은 0 이상의 정수(수용 인원)이거나 또 다른 객체이다. 예를 들어 층 아래에 구역, 구역 아래에 회의실을 두면 {f1:{a:{r1:10,r2:6}},f2:{r3:8}} 와 같이 적는다. 같은 객체 안에서 같은 키가 두 번 이상 나오면 나중에 나온 항목이 앞선 항목을 통째로 대체한다. 앞선 항목이 객체였다면 그 안의 내용도 모두 사라진다. 대체는 같은 객체 안에서만 일어나며, 다른 객체에 있는 같은 이름의 키와는 관계가 없다. 관리자는 Q개의 경로 질의를 던진다. 경로는 키를 마침표로 이어 쓴 것이고, 최상위 객체에서 키를 차례로 따라 내려간 위치를 가리킨다. 질의의 답은 그 위치에 있는 정수 값의 합이다. 그 위치가 정수이면 그 정수 자신이 답이고, 객체이면 그 아래 모든 깊이에 있는 정수의 합이다. 빈 객체이면 답은 0이다. 경로를 따라가다 존재하지 않는 키를 만나거나, 정수 값 아래로 더 내려가야 하면 -1을 출력한다. 모든 대체가 끝난 최종 구조를 기준으로 답해야 하며, 답은 정수이다.
입력
첫 줄에 설정 문자열 S, 둘째 줄에 정수 Q가 주어지고, 이어서 Q개의 줄에 질의 경로가 한 줄에 하나씩 주어진다. S에는 공백이 없고 중괄호의 짝이 맞는다. 키는 길이 1 이상 8 이하의 영문 소문자와 숫자로 이루어지며, 값인 정수는 0 이상 10^9 이하의 십진수이고 0 이외에는 앞자리 0이 없다. S에 나오는 키의 총 개수(대체되는 항목 포함)는 200,000 이하이고 객체 중첩 깊이는 100 이하이다. 1 ≤ Q ≤ 200,000 이다. 질의 경로는 비어 있지 않으며 같은 규칙의 키 1개 이상 100개 이하를 마침표로 이은 문자열이다.
출력
각 질의의 답을 한 줄에 하나씩 순서대로 출력한다.
예제 입력 1
{a:{x:3,y:{z:4}},b:5,a:{x:7,w:1},c:{}}
6
a
a.x
a.y.z
b
b.q
c
예제 출력 1
8 7 -1 5 -1 0
예제 입력 2
{f1:{m1:10,m2:20},f2:{m1:5}}
4
f1
f2.m1
f3
f1.m2.x
예제 출력 2
30 5 -1 -1
힌트 펼치기
- 문자열을 한 번 훑으며 스택으로 현재 객체를 관리하면 재귀 없이 파싱할 수 있다.
- 같은 키를 맵에 다시 넣으면 이전 값이 통째로 사라지므로 대체 규칙이 자연스럽게 처리된다.
- 파싱이 끝난 뒤 각 객체의 하위 정수 합을 한 번만 계산해 두면 질의는 경로 길이만큼의 탐색으로 끝난다.
알고리즘 분류
파싱해시 맵구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |