Verdis Quo
시간 제한1초메모리 제한128 MB
주어진 유효한 로마 숫자를 덧셈과 뺄셈 규칙에 따라 십진 정수로 변환한다.
문제
로마인은 알파벳 일곱 글자로 수를 나타냈다. 각 글자와 대응하는 값은 다음과 같다.
- I = 1
- V = 5
- X = 10
- L = 50
- C = 100
- D = 500
- M = 1000
이 일곱 글자와 다음 규칙을 이용하면 원하는 모든 수를 적을 수 있다.
- 덧셈 규칙: 글자들이 왼쪽에서 오른쪽으로 값이 커지지 않는 순서로 놓이면, 각 값을 모두 더한다. 예를 들어 MMCLVII는 1000 + 1000 + 100 + 50 + 5 + 1 + 1 = 2157이다.
- 뺄셈 규칙: 이렇게만 적으면 로마 숫자가 너무 길어지므로 뺄셈 규칙도 있다. 어떤 글자의 값이 바로 오른쪽 글자의 값보다 작으면, 그 왼쪽 글자의 값을 뺀다. 예를 들어 MCMXIV는 1000 − 100 + 1000 + 10 − 1 + 5 = 1914이다.
- I, X, C는 네 번 이상 연달아 쓸 수 없다. 즉 IIII는 더 짧은 IV로 바꿔야 한다.
- V, L, D는 두 번 이상 연달아 쓸 수 없다.
- M은 개수 제한이 없다.
- 뺄셈 규칙은 바로 왼쪽 글자 하나에만 적용된다. 즉 IV는 4이지만, IIV는 3이 아니며 올바른 로마 숫자도 아니다.
- 뺄셈 규칙에서 왼쪽에 올 수 있는 글자는 I, X, C뿐이다.
- 뺄셈 규칙에서 I는 V나 X 앞에만, X는 L이나 C 앞에만, C는 D나 M 앞에만 올 수 있다.
이 규칙을 만족하는 로마 숫자가 주어질 때, 이를 10진수 정수로 바꾸어라.
입력
첫째 줄에 로마 숫자의 개수 N이 주어진다.
다음 N개의 줄에 로마 숫자가 한 줄에 하나씩 주어진다. 각 로마 숫자는 위 규칙을 따르며, 나타내는 값은 10000 이하의 자연수이다.
출력
각 로마 숫자를 10진수 정수로 바꾸어 한 줄에 하나씩 출력하라.
힌트
Daft Punk - Veridis Quo