공식 치환

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

요약
0과 1 두 변수를 포함하는 두 개의 수식 문자열이 주어질 때, 두 수식이 완전히 같아지도록 각 변수에 대입할 기본 수식을 찾는 유니피케이션 문제입니다.
난이도

보통10점 중 7점

유형
재귀, 문자열 매칭, 문자열, 백트래킹
정답자
아직 제출이 없습니다

문제

다음과 같이 수식을 정의한다.

  • 상수는 영어 소문자(a-z) 한 글자이다.
  • 변수는 숫자 0 또는 1이다.
  • 함수는 영어 대문자(A-Z) 한 글자이다.
  • 수식은 상수, 변수, 또는 함수(수식,수식) 형태이다.

예를 들어 a, 0, F(a,F(a,a)), G(F(0,1),G(a,1))은 올바른 수식이다. A, a(9), F(G(),a)는 올바른 수식이 아니다.

변수를 포함하지 않는 수식을 기본 수식이라고 한다.

두 수식이 주어진다. 두 수식에 나타나는 변수 0과 1의 모든 등장 위치를 각각 어떤 기본 수식으로 치환하여, 치환 후 두 수식이 완전히 같아지게 하라.

같은 변수가 여러 번 나타나면 모든 등장 위치에 같은 기본 수식을 사용해야 한다.

입력

입력은 두 줄이다. 각 줄에는 수식 하나가 주어지며, 각 수식의 길이는 100자를 넘지 않는다.

출력

첫째 줄에는 변수 0의 치환 결과를, 둘째 줄에는 변수 1의 치환 결과를 출력한다.

각 줄은 변수=기본 수식 형식이어야 한다. 어떤 변수가 입력 수식에 전혀 나타나지 않아도 그 변수의 치환 결과를 출력해야 한다.

항상 적어도 하나의 해가 존재하는 입력만 주어진다. 해는 유일하지 않을 수 있다.

예제3

  1. 예제 1

    입력
    0
    a
    
    예상 출력
    0=a
    1=b
    
  2. 예제 2

    입력
    F(0,G(a,1))
    F(c,G(a,F(0,0)))
    
    예상 출력
    0=c
    1=F(c,c)
    
  3. 예제 3

    입력
    F(G(1,a),G(1,a))
    F(0,0)
    
    예상 출력
    0=G(b,a)
    1=b