미니 셀 저장소


답안 제출

Points: 80 (partial)
시간 제한: 1.0s
메모리 제한: 64M

문제 유형
허용된 언어
C

문제

N개의 셀이 있다. 셀 번호는 0번부터 N-1번까지다. 각 셀은 정수, 실수, 문자열 중 하나를 저장한다.

초기 셀 정보는 다음 형식으로 주어진다.

I value     (정수)
F value     (실수)
S string    (문자열)

명령은 다음과 같다.

PRINT i
: i번 셀의 타입과 값을 출력한다.
  정수면 I 값, 실수면 F 값(소수점 둘째 자리까지), 문자열이면 S 문자열 형식.
COPY a b
: a번 셀 전체를 b번 셀에 복사한다.
SETI i value / SETF i value / SETS i string
: i번 셀을 해당 타입과 값으로 바꾼다.
ADD a b
: 두 셀이 모두 숫자(정수 또는 실수)이면 합을 출력한다.
  둘 다 정수면 정수로, 하나라도 실수면 소수점 둘째 자리까지 출력한다.
  둘 중 하나라도 문자열이면 ERROR를 출력한다.
LEN i
: i번 셀이 문자열이면 길이를 출력하고, 문자열이 아니면 ERROR를 출력한다.

입력

N
cell0
cell1
...
cellN-1
Q
command
...

출력

PRINT, ADD, LEN 명령마다 결과를 출력한다.

제한

1 <= N <= 30
1 <= Q <= 100
0 <= i, a, b < N
문자열 길이 <= 29
정수와 실수 값의 절댓값은 1,000,000 이하이다.
ADD 결과의 절댓값은 2,000,000 이하이다.
문자열은 공백을 포함하지 않는다.

예제 입력

3
I 10
S ab
F 1.50
7
PRINT 1
ADD 0 2
ADD 0 1
COPY 0 1
ADD 0 1
SETS 2 hello
LEN 2

예제 출력

S ab
11.50
ERROR
20
5
힌트 보기
typedef enum { CELL_INT, CELL_FLOAT, CELL_STRING } CellType;
typedef struct {
    CellType type;
    union {
        int i;
        float f;
        char s[30];
    } data;
} Cell;

코멘트

현재 작성된 코멘트가 없습니다.