#1765 변수 관리

14  1 s   128 MB  

Description

변수를 선언할 때 변수에 특정 값을 할당 하지 않으면, 변수에 어떤 값이 할당 되기 전 까지 그 변수는 임의의 쓰레기 값(garbage value)을 가지게 된다. 다음과 같이 프로그램의 명령어가 주어질 때 모든 명령어가 수행된 뒤 각각의 변수가 어떤 값을 가지고 있는지 출력하는 프로그램을 작성하라.

 
프로그램의 명령어 입력 형식은 다음과 같고 변수 타입은 정수형만 사용한다고 가정한다.
 
 
만약 같은 변수명에 대하여 선언을 두 번 이상 하거나 선언되지 않은 변수에 값을 assign 하는 경우에는 “Compile Error”를 출력한다.

Input

맨 처음 테스트 케이스의 수 T 가 입력된다. (1 ≤ T ≤ 20)

각 테스트 케이스의 첫 줄에는 입력될 명령어의 개수 N 이 입력된다. (1 ≤ N ≤ 10) N 개의 명령어가 주어진다.
잘못된 명령어 형식은 주어지지 않는다. 변수명은 영문 대문자로만 이뤄진다.
할당 되는 값의 크기는 −1000 이상 1000 이하의 정수이고, 변수명의 크기는 100글자 이하이다.

Output

각 테스트 케이스마다 각각의 변수가 어떤 값을 가지고 있는지를 아래 ‘Sample Output’형식에 맞춰 출력한다.

변수 출력의 순서는 사전순으로 출력하며 만약 변수가 쓰레기 값을 가지고 있는 경우에는 “X = garbage”의 형식으로 출력한다.
만약 같은 변수명에 대하여 선언을 두 번 이상 하거나 선언되지 않은 변수에 값을 assign 하는 경우에는 “Compile Error”만 출력한다.
한 테스트 케이스에 대한 출력이 끝날때마다 “$”를 한줄에 하나씩 출력한다.

Sample Input

Sample Output

3
5
declaration A
declaration B
declaration C
assign A 10
assign B 20
2
declaration A
declaration A
3
declaration A
assign A 15
assign B 20
A = 10
B = 20
C = Garbage
$
Compile Error
$
Compile Error
$

Source

2011 Ajou University Programming Contest, Division 1