문제1765--변수 관리

1765: 변수 관리

실행시간 제한: 1 Sec  메모리사용 제한: 128 MB
제출: 50  통과: 16
[제출] [채점기록] [묻고답하기]

문제 설명

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

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

입력 설명

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

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

출력 설명

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

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

입력 예시 Copy

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

출력 예시 Copy

A = 10
B = 20
C = Garbage
$
Compile Error
$
Compile Error
$