아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

설정 파일

면접 대비

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

요약
중괄호로 구분된 설정 파일에서 변수 대입이 블록 범위를 따르도록 파싱하고, 변수 대 변수 대입마다 대입되는 값을 출력한다.
난이도

보통10점 중 5점

유형
스택, 해시맵, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Vadim은 자기 프로젝트의 설정 파일용 파서를 만들고 있다. 설정 파일은 중괄호로 구분된 블록으로 이루어진다. "{"는 블록의 시작, "}"는 블록의 끝을 나타낸다. 블록은 중첩될 수 있다. 한 블록은 여러 다른 블록을 포함할 수 있다.

설정 파일에는 변수가 있다. 각 변수의 이름은 영문 소문자 최대 열 글자로 이루어진다. 각 변수는 정숫값을 가지며, 처음에는 모든 변수의 값이 00으로 설정되어 있다.

변수에 새 값을 대입할 수 있다. 변수에 상숫값을 대입하는 것은 "<variable>=<number>"로 나타낸다. 여기서 <variable>은 변수의 이름이고, <number>는 정수이며 절댓값은 10910^9을 넘지 않는다. 파서는 파일을 한 줄씩 읽는다. 대입 연산을 읽으면 변수에 새 값을 대입한다. 이 값은 현재 블록이 끝날 때까지 사용되고, 그 뒤에는 이전 값이 복원된다. 대입 연산 뒤에 현재 블록에 중첩된 블록이 있으면, 그 블록 안에서는 변수의 새 값이 사용된다.

변수에 다른 변수의 값을 대입할 수도 있다. 이런 연산은 "<variable1>=<variable2>"로 나타낸다. 파서가 이런 줄을 읽으면 variable2의 현재 값을 variable1에 대입한다. 상숫값을 대입할 때와 마찬가지로, 새 값은 현재 블록이 끝날 때까지 사용된다. 현재 블록이 끝나면 변수는 블록 시작 시점의 값을 되찾는다.

Vadim은 디버깅을 위해 "<variable1>=<variable2>" 형태의 줄을 처리할 때 대입되는 모든 값을 출력하려고 한다. 파서 디버깅을 도와주자.

입력

입력은 최소 11줄, 최대 10510^5줄로 이루어진다. 각 줄은 다음 네 가지 중 하나다.

  • {: 블록의 시작;
  • }: 블록의 끝;
  • <variable>=<number>: 변수에 상숫값 대입;
  • <variable1>=<variable2>: 한 변수를 다른 변수에 대입. 여기서 <variable1>과 <variable2>는 같을 수 있다.

입력은 올바르며 문제의 서술에 부합한다. 입력에는 공백이 없다.

출력

"<variable1>=<variable2>" 형태의 각 줄마다 대입되는 값을 출력한다.

예제1

  1. 예제 1

    입력
    a=b
    b=123
    var=b
    b=-34
    {
    c=b
    b=1000000000
    d=b
    {
    a=b
    e=var
    }
    }
    b=b
    
    예상 출력
    0
    123
    -34
    1000000000
    1000000000
    123
    -34