로마자를 숫자로 바꾸기.
1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요. 로마 숫자를 숫자로 표기하면 다음과 같습니다.
Symbol -> Value
I -> 1
V -> 5
X -> 10
L -> 50
C -> 100
D -> 500
M -> 1000
로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다. III = 3 XII = 12 XXVII = 27 입니다.
그런데 4를 표현할 때는 IIII가 아니라 IV 입니다. 뒤의 숫자에서 앞의 숫자를 빼주면 됩니다. 9는 IX입니다.
I는 V와 X앞에 와서 4, 9 X는 L, C앞에 와서 40, 90 C는 D, M앞에 와서 400, 900
function romanToNum (s) { let output = 0; const symbol = { I : 1, V : 5, X : 10, L : 50, C : 100, D : 500, M : 1000, } for(let i = 0; i < s.length ; i++ ) { let now = symbol[s[i]]; let next = symbol[s[i+1]]; if( now < next ) { output = output - now }else { output = output + now } } return output }
먼저 반복문으로 함수의 매개변수로 들어오는 배열을 순회하고,
객체 안에 값이 있는지 비교합니다.
그리고 만약 첫번째 요소가 두번째 요소보다 작다면 output 값에서 - 첫번째 요소를 해줘서 4,9 ,40,90 ,400,900 값을 나타낼 수 있게 해주고,
그게 아니라면 정상적으로 값을 출력하게끔 하는 식입니다.