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

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

스프레드시트

면접 대비

시간 제한1초메모리 제한128 MB

요약
9행 26열 크기의 작은 스프레드시트에서 각 셀이 사칙연산과 셀 참조로 이루어진 정수식을 가지며, A1이 순환 참조에 걸리면 1000000을 출력한다.
난이도

보통10점 중 6점

유형
구현, DFS, 재귀, 그래프
정답자
아직 제출이 없습니다

문제

아주 단순한 스프레드시트를 흉내 내는 프로그램을 작성한다. 이 표는 1부터 9까지 번호가 매겨진 9개의 행과 A부터 Z까지 이름이 붙은 26개의 열로 이루어진다. 각 칸(셀)은 열 문자 뒤에 행 번호를 붙여 참조하며, 예를 들어 B1, S8 처럼 표기한다.

각 칸에는 최대 255자 길이의 식이 들어 있다. 식은 정수 상수, 칸 참조, 괄호, 그리고 연산자 +, -, *, /(정수 나눗셈)로 이루어진다. 예를 들어 567, E8/2, (3+B3)*(C4-1) 은 모두 올바른 식이다.

모든 연산은 정수로 이루어진다. 정수 나눗셈은 0을 향해 버림한다(예: 7/2 = 3, (0-7)/2 = -3). 0으로 나누면 결과는 0이다. 모든 피연산자와 결과의 절댓값은 1000000보다 작음이 보장되므로, 값 1000000은 순환 참조를 나타내는 신호로 사용한다.

참조한 칸에 자신의 식이 정의되어 있지 않으면 그 값은 0으로 간주한다. 둘 이상의 칸이 직접 또는 간접적으로 서로 의존하는 경우를 순환 참조라고 한다.

입력

첫 줄에 식의 개수 N이 주어진다. 이어지는 N개의 줄은 각각 <칸 참조>=<식> 형식이다. 모든 식은 문법적으로 올바르며, 각 칸은 최대 하나의 식으로만 정의된다. 토큰 사이에는 공백이 있을 수 있다.

출력

칸 A1의 값을 한 줄에 출력한다. 다만 순환 참조 때문에 A1을 계산할 수 없으면 1000000을 출력한다.

예제3

  1. 예제 1

    입력
    4
    A1=B1+C5
    B1=20
    C5 =B1 /D7-E1*E1
    E1=(3+1)*2
    
    예상 출력
    -44
    
  2. 예제 2

    입력
    1
    A1=42
    
    예상 출력
    42
    
  3. 예제 3

    입력
    1
    B1=5
    
    예상 출력
    0