방정식

면접 대비

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

요약
후위 표기법으로 주어진 식에서 변수 X가 최대 한 번 등장할 때 이를 선형식 a*x+b로 계산해 f(x)=0의 해를 기약분수로 구하고, 해가 없거나 무수히 많은 경우를 판별하는 문제입니다.
난이도

보통10점 중 5점

유형
스택, 수학, 구현
정답자
아직 제출이 없습니다

문제

후위 표기법(postfix notation)으로 주어진 방정식 f(x) = 0의 해를 구하는 프로그램을 작성하시오.

f(x)는 숫자, 연산자 +, -, *, /, 그리고 변수 x로 이루어진 후위 표기식이며, 변수 x는 식 전체에서 최대 한 번만 등장한다.

예를 들어, 방정식 (4x + 2) / 2 = 0의 좌변 f(x)는 후위 표기법으로 다음과 같이 표현된다.

4 X * 2 + 2 /

이때 방정식 f(x) = 0의 해는 x = -1/2이다.

입력

첫째 줄에 방정식 f(x)가 후위 표기법으로 주어진다. 변수 x는 대문자 X로 표기하며, 식은 연산자 +, -, *, / 와 한 자리 숫자 0-9로 이루어진다. X는 최대 한 번 등장한다. 토큰은 공백으로 구분되며, 최대 30개까지 주어진다.

0으로 나누지 않고 해를 구할 수 있는 입력만 주어진다.

출력

f(x) = 0의 해가 정확히 하나인 경우, X = p/q 형태로 출력한다. 이때 p와 q는 서로소이고 q는 양수이어야 한다. 해가 0인 경우에는 X = 0/1을 출력한다.

해가 존재하지 않는 경우에는 NONE을 출력한다.

해가 두 개 이상인 경우에는 MULTIPLE을 출력한다.

예제4

  1. 예제 1

    입력
    4 X * 2 + 2 /
    
    예상 출력
    X = -1/2
    
  2. 예제 2

    입력
    1 2 / 2 4 / - X *
    
    예상 출력
    MULTIPLE
    
  3. 예제 3

    입력
    1 1 X 2 + / /
    
    예상 출력
    NONE
    
  4. 예제 4

    입력
    3 X * 7 -
    
    예상 출력
    X = 7/3