[알고리즘]roman to integer

이름·2022년 1월 10일
0

알고리즘

목록 보기
3/3

1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환해주세요. 로마 숫자를 숫자로 표기하면 다음과 같습니다.
I:1
V:5
X:10
L:50
C:100
D:500
M:1000

1. Object

문제를 해결하기 위해 가장 먼저 해야 하는 것은 일련의 로마자를 해당하는 숫자로 치환하는 것입니다.

최초의 아이디어는 s값을 split('')으로 잘라내고 난 후 array의 어떤 적절한 method를 사용하여 중복되는 인자의 종류와 개수를 골라내는 상상을 했는데요, MDN을 뒤져본 결과 활용할 수 있는 method가 없었습니다.

그래서 구글링으로 Object를 활용하여 정답을 도출해내는 방법을 찾았습니다.

//const s = 'MCCLIV'
  const romeNum = {
    'I': 1,
    'V': 5,
    'X': 10,
    'L': 50,
    'C': 100,
    'D': 500,
    'M': 1000 
  }
  let result = 0
  const romeArray = s.split('')
  // console.log(romeArray)
>  const numArray = romeArray.map(rome => romeNum[rome])
  // console.log(numArray)
  for (i=0; i<numArray.length; i++) {
    if (numArray[i] < numArray[i+1] ) {
      result -= numArray[i]
    } else {
      result += numArray[i]
    }
  }

제시된 바와 같이 로만을 split('')으로 잘라서 Array로 만드는 부분 까지는 맞췄습니다! 대신 제가 상상하는 어느 나이스한 method가 아닌 map을 사용하여 object 내에서 키-값 페어링을 조사해 array를 치환하였네요.

Object란 주어진 값의 객체 래퍼를 생성하는 생성자 입니다. 이 알고리즘이 트리거가 되어 오브젝트에 대해 짧게 정리해 보았는데요, 여기 를 참고하시면 제가 이해한 오브젝트에 대한 간략한 정의를 확인할 수 있습니다.

0개의 댓글