2002년 가을학기 문제해결기법 - 문제 10

전자계산기

전자계산기(calculator) 사용에 불편을 느끼고 있던 한국대학교 학생이 드디어 치환문(assignment statement)을 계산하는 전자계산기를 만들기로 결심하였다. 예를 들어 아래와 입력하면, 입력에 사용한 모든 변수의 최종값을 출력하는 것이다.

a = 4;

b = (7+3)*c;

length = a + b;

width=b - a;

area =length *width;

입력은 아래와 같은 제약을 만족한다고 가정한다.

1. 한 줄에 하나의 치환문만 사용할 수 있다.

2. 치환문은 모두 세미콜론으로 끝난다.

3. 변수의 길이는 10 이하이고, 모두 영문 소문자만 사용한다.

4. 변수는 모두 정수형이다.

5. 연산자는 모두 정수 연산자로 사칙연산자 +, -, *, /와 지수연산자 ^가 있다. 예를 들면, 10/3 = 3, -10/3=-3이고, 2^3 = 8, 2^2^3 = 2^(2^3) = 2^8 = 256이다.

6. 식은 연산자를 포함하여, 정수값, 변수, 그리고 괄호 (, )로 이루어져 있다.

7. 수식에 공백을 포함할 수 있다.

8. 모든 치환문은  80자를 넘지 않는다.

9. 초기화하지 않은 변수값은 0이다.

10. 틀린 치환문이 입력되지 않는다.

치환문을 입력받아서, 치환문이 모두 실행된 후 모든 변수의 값을 출력하는 프로그램을 작성하시오.

프로그램 이름과 설명 파일 이름은 각각 calc.xxx, calc.yyy라고 하고 실행 파일 이름은 calc.exe로 한다. 프로그램의 실행 시간은 5초를 초과할 수 없다.

입력 형식

입력 파일의 이름은 INPUT.TXT이다. 첫 줄에는 치환문의 수 N (1 ≤N ≤30)이, 둘째 줄 이후 한 줄에 하나씩 치환문이 입력된다.

출력 형식

출력 파일의 이름은 OUTPUT.TXT이다. 입력된 치환문에 나타난 모든 변수에 대해서, 모든 치환문이 실행된 후 변수의 최종값을 변수명과 함께 출력한다. 출력은 변수명의 오름차순으로 출력한다.

입력과 출력의 예

INPUT.TXT

6

a=4;

b     =        (7 + 3)*c;

length = a + b;

width = b - a;

area =length *width;

c = 2;

OUTPUT.TXT

a = 4

area = 84

b = 10

c = 2

length = 14

width = 6