[TIL]Code kata Week 2-Day 1ローマ字から数字に変換


質問する


ローマ字から数字に変換
パラメータとして1~3999のアルファベットsを使用する場合は、対応する数値を返します.ローマ数字を数字としてマークします.
Symbol     Value
I               1
V               5
X               10
L               50
C              100
D              500
M             1000
ローマ字を数字で読む方法は、左からローマ字を順番に付けます.III=3個のXII=12個のXXXVII=27.
しかし表現4の場合はIIIではなくIV後ろの数字から前の数字を引けばいいです9はIXです.
私はVとXの前に来て、4,9 XはL,Cの前に来て、40,90 CはD,Mの前に来て、400900
ローマ字を簡単に数字に変換する論理が必要です.しかし、問題には2つの例外がある.1つ目は4、2つ目は9の表現です.
function romanToNum(s) {
  // 여기에 코드를 작성해주세요.
   const Roma = {
I   :    1,
V   :   5,
X   :   10,
L   :    50,
C    :   100,
D    :   500,
M    :   1000,
}
  const romArr= s.split('');
  const numArr = romArr.map(el => Roma[el]);
  let sum=0;
  for(let i=0 ;i < numArr.length ;i++) {
    if(numArr[i] < numArr[i+1]) {
      sum = sum-numArr[i];
    } else {
      sum = sum + numArr[i];
    }  ;
  }
  return sum;
}
前の数字が後の数字より小さい場合を探すために複文を用いた.
現在の数字が後の数字より小さい場合、結果から前の数字を減算すると4,9を表すことができます.