시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB172353132.979%

문제

사람의 기분과 심리 상태는 쉽사리 예측할 수 없다. 주변의 환경 뿐만 아니라 그 사람의 성격이나 경험에 따라서도 서로 다른 특징을 가지기 때문이다. 하루 종일 울던 사람이 다음 날에는 편하게 웃고있을 수도 있다.

개인화 인공지능 시스템을 개발하고 있는 서지수 박사는 한 가지 가정을 세운다.

‘오늘 한 사람의 행복도에 영향을 준 요인들과 각 요인들의 상관 관계를 알고 있다면 충분히 다음 날의 기분도 예측할 수 있을 것이다.’

사람의 기분에 영향을 줄 수 있는 요인들은 환경적 요인과 복합적 요인 두 가지로 구분할 수 있다.

환경적 요인(Enviroment Factor)은 관찰을 통해 수치적으로 측정할 수 있는 요인을 말한다. 예를 들어서 그 날의 온도, 만난 친구의 수, 수면 시간 등이 있다.

복합적 요인(Complex Factor)은 서로 다른 두 개의 요인에 따라 복합적으로 결정되는 요인을 말한다. 복합적 요인은 두 요인들의 연산 결과로 표현될 수 있다. 예를 들어서 A(학습 만족도)라는 요인이 B(오늘 수강한 수업의 수)와 C(피로도)라는 두 요소의 합으로 결정되는 요인이라고 하자. 이때 A라는 요인은 두 개의 요인의 값에 따라서 결정되는 복합적 요인이 된다. 수식으로는 A=B+C와 같이 표현할 수 있다. 결과적으로 '행복도'또한 하나의 복합적 요소로 생각할 수 있다.

오늘의 행복도에 영향을 준 환경적 요인의 수치를 알고, 모든 환경적/복합적 요인들 간의 상관 관계를 알고 있다고 가정해보자. 이때, 각 요인들에 대해 행복도에 대한 영향력을 계산하려고 한다. 행복도에 대한 영향력이란, 각 요인의 행복도에 대한 순간 변화율을 의미한다.

예를 들어서 HAPPY(행복도)가 두 요인 A(그 날의 소득)와 B(근무 만족도)라는 두 요인의 곱으로 표현되는 복합적 요인이며 오늘의 측정 결과가 아래와 같다고 해보자.

  • A = 17
  • B = 13
  • HAPPY = A × B

이 경우 행복도 HAPPY는 221이 되며, 행복도 대한 A의 순간 변화율은 13이 되므로 A의 영향력은 13이 된다. 마찬가지로 B의 영향력은 17이 된다. 당연히 HAPPY 자체의 행복도에 대한 순간 변화율은 1이다.

하지만 실제로는 행복도에 영향을 주는 요인들이 다양하고 상관 관계가 복잡하기 때문에 각 영향력을 계산하는 것이 쉽지 않다. 서지수 박사를 위해서 행복도를 결정하는 요인들의 종류와 정보가 주어질 때, 각 요인들의 영향력을 계산하는 프로그램을 작성해주자.

입력

첫 줄에는 입력으로 주어질 요인들의 수를 나타내는 자연수 N이 주어진다. 이후 총 N개의 줄에 걸쳐서 한 줄에 하나의 요인에 대한 정보가 입력으로 주어진다.

  1. 환경적 요인의 경우 {요인의 이름} E {측정된 수치}와 같은 형식으로 주어진다.
    • 요인의 이름은 20글자 이하의 알파벳 대문자다.
    • 측정된 수치는 절댓값이 20이하인 정수다.
  2. 복합적 요인의 경우 {요인의 이름} {연산의 종류} {피연산자 이름1} {피연산자 이름2}와 같은 형식으로 주어진다.
    • 요인의 이름은 20글자 이하의 알파벳 대문자다. 행복도는 항상 HAPPY라는 이름을 가진다.
    • 피연산자의 이름은 N개의 요인들 중 서로 다른 두 개의 이름이 차례로 주어진다. 연산의 좌항과 우항 순서로 주어진다.
    • 연산의 종류는 A(덧셈), S(뺄셈), M(곱셈), D(나눗셈) 중 하나로 주어진다.

또한 모든 데이터는 아래의 규칙을 만족한다.

  • 모든 요인의 연산 결과와 영향력은 유리수며, 기약분수로 표현했을 때 분모는 항상 1억 이하의 자연수이고 분자는 절댓값이 10억 이하인 정수다.
  • 복합적 요인이 자기 자신을 피 연산자로 가지거나, 계산 과정에서 자기 자신을 순환 참조하는 경우는 없다.
  • 하나의 요인이 두 개 이상의 복합적 요인에 피 연산자가 되는 경우는 존재하지 않는다.

출력

총 N줄에 걸쳐서 각 요인들의 이름과 영향력을 한 줄에 하나씩 출력한다. 이때, 각 요인들의 이름에 대한 사전순으로 출력한다.

각 줄은 {요인의 이름} {행복도에 대한 영향력}와 같은 형식으로 출력한다.

  • 각 요인의 영향력은 기약분수 형태로 출력되어야 한다. 예를 들어서 MONEY라는 요인의 영향력이 -0.25인 경우 MONEY -1/4와 같이 출력되어야 한다.
  • 행복도에 전혀 영향을 주지 않는 요인은 영향력이 0이다. 이때 영향력은 0/1과 같이 출력한다.

Small (100점)

  • N = 3

Large (200점)

  • 1 ≤ N ≤ 1,000

예제 입력 1

3
A E 17
B E 13
HAPPY M A B

예제 출력 1

A 13/1
B 17/1
HAPPY 1/1

예제 입력 2

7
MONEY E 17
HAPPY M MONEY QUALITY
QUALITY M POWER GIRLFRIEND
GIRLFRIEND E 1
POWER S HEALTH SICK
HEALTH E 10
SICK E 2

예제 출력 2

GIRLFRIEND 136/1
HAPPY 1/1
HEALTH 17/1
MONEY 8/1
POWER 17/1
QUALITY 17/1
SICK -17/1

예제 입력 3

9
HAPPY S MONEY SICK
MONEY E 18
SICK D PAIN HEALTH
PAIN E 1
HEALTH A MIND BODY
MIND D LOVE SAD
BODY E -3
LOVE E 17
SAD E 5

예제 출력 3

BODY 25/4
HAPPY 1/1
HEALTH 25/4
LOVE 5/4
MIND 25/4
MONEY 1/1
PAIN -5/2
SAD -17/4
SICK -1/1

힌트

2, 3번 예제는 Small에서는 나오지 않는다.

출처

University > 아주대학교 > 2018 Ajou Programming Contest > Division 1 H번