1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요.
로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됩니다.
그런데 4를 표현할 때는 IIII가 아니라 IV 입니다.
뒤의 숫자에서 앞의 숫자를 빼주면 됩니다.
9는 IX입니다.
I는 V와 X앞에 와서 4, 9
X는 L, C앞에 와서 40, 90
C는 D, M앞에 와서 400, 900
result
를 생성해줬습니다.split()
함수를 사용해서 ''
로 나눠줬습니다.IV
가 4가 되는 식은 앞에 있는 로마자 I
가 뒤에 있는 라마자 V
보다 작아서 뒤에 있는 로마자 V
에서 앞에 있는 로마자 I
자를 빼줬습니다. 9, 40, 90, 400, 900이 만들어지는 원리도 동일합니다.i
번째와 i+1
번째의 로마자를 비교하고 i번째
로마자가 나타내는 숫자를 result
에서 빼하는 것인지 더하는 것인지 결정하게 되는 것인데 그렇다면 s.length
만큼 돌면 마지막 로마자는 비교할 i+1
로마자가 게 됩니다. 그러므로 for문에서 s.length
에서 -1을 해줘서 마지막 로마자는 for문과 if문에서 제외하고 마지막에 결과값을 반환할 때 더해줬습니다.map()
함수를 사용할 수 있습니다. 코드가 깔끔해졌습니다.map()
함수를 사용하지 않은 해켤 코드가 더 재미있어 보입니다.map()
함수의 다양한 형태를 공부해야겠습니다.