도전
입력 문자열이 주어지면 1 (= I
)에서 3999 (= MMMCMXCIX
) 사이의 올바른 로마 숫자를 나타내면 true 값을, 그렇지 않으면 false 값을 반환하십시오.
세부
- 입력은 문자 만 포함하는 비어 있지 않은 문자열입니다
IVXLCDM
. - 로마 숫자 (이 문제에서 여기서 사용하는)는 다음과 같이 정의됩니다.
다음 기호 만 사용합니다.
Symbol I V X L C D M
Value 1 5 10 50 100 500 1000
실제로 유효한 로마 숫자 인 문자열을 정의하려면 아마도 대화 규칙을 제공하는 것이 가장 쉬운 방법 일 것입니다. 10 진수 a3 a2 a1 a0
(각 ai
숫자는 1 자리를 나타냅니다 . 예를 들어.를 나타내는 792
경우 a3=0, a2=7, a1=9, a0=2
)를 로마 숫자로 쓰려면 분해합니다. 수십의 힘으로. 10의 다른 힘은 다음과 같이 쓸 수 있습니다.
1-9: I, II, III, IV, V, VI, VII, VIII, IX
10-90: X, XX, XXX, XL, L, LX, LXX, LXXX, XC
100-900: C, CC, CCC, CD, D, DC, DCC, DCCC, CM
1000-3000: M, MM, MMM
왼쪽에서 가장 큰 숫자로 시작하여 각 숫자가 개별적으로 나타내는 숫자를 변환하여 연결할 수 있습니다. 따라서 위의 예에서는 다음과 같습니다.
Digit a3 a2 a1 a0
Decimal 0 7 9 2
Roman DCC XC II
따라서 로마 숫자는 792
입니다 DCCXCII
. 이 도전과 관련된 모든 로마 숫자의 전체 목록은 다음과 같습니다. OEIS a006968.txt
예
Truthy
MCCXXXIV (1234)
CMLXXXVIII (988)
DXIV (514)
CI (101)
팔시
MMIXVIII
IVX
IXV
MMMM
XXXVX
IVI
VIV
MMMM
유효하지 않습니까? M <letter> 대신 5000을 사용해야하는 문자가 있습니까?
I,V,X,L,C,D,M
입니다.