5/3 CODE KATA #6

ym j·2021년 5월 5일
0

Algorithm

목록 보기
3/9
post-thumbnail

CODE KATA

Problem

로마자에서 숫자로 바꾸기


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


Code

function romanToNum(s) {
  // 여기에 코드를 작성해주세요.
     const romeNum = { // 해당 로마 숫자에 대한 값 key : value로 표시
     "I" : 1, 
     "V" : 5,
     "X" : 10,
     "L" : 50, 
     "C" : 100,
     "D" : 500, 
     "M" : 1000,
   }
    let result = 0;
   const romeArray = s.split('') // 제시되는 string타입의 문자를 배열로 만듦
   const numArray = romeArray.map(rome => romeNum[rome]) // 문자값을 숫자로 mapping
   for(let i = 0; i < numArray.length; i++){ 
     if(numArray[i] < numArray[i+1]){
       result -= numArray[i] // 'I'는 1, 'V'는 5 이므로 result값에서 작은 값을 빼는 방향으로 로직 구현
     } else {
       result += numArray[i] // 그 이외의 경우 result값에 더해준다.
     }
   }
     return result
}
romanToNum("IV") // 4
  • 로마 숫자 표기법에서 4 혹은 9 표현의 경우, 제시된 문자를 split후에 앞의 문자 (숫자)가 무조건 작은 값을 띄기 때문에, 대소를 비교하여 최종 결과값에서 빼주는 식으로 로직을 구현하였다.
profile
블로그를 이전하였습니다 => "https://jymini.tistory.com"

0개의 댓글

관련 채용 정보