Algorithm 10 - [JS] Roman Numerals Encoder

luneah·2021년 12월 4일
0

Algorithm CodeKata

목록 보기
10/13
post-thumbnail

Roman Numerals Encoder

Create a function taking a positive integer as its parameter and returning a string containing the Roman Numeral representation of that integer.

Modern Roman numerals are written by expressing each digit separately starting with the left most digit and skipping any digit with a value of zero. In Roman numerals 1990 is rendered: 1000=M, 900=CM, 90=XC; resulting in MCMXC. 2008 is written as 2000=MM, 8=VIII; or MMVIII. 1666 uses each Roman symbol in descending order: MDCLXVI.

Example:

solution(1000); // should return 'M'

Help:

Symbol    Value
I          1
V          5
X          10
L          50
C          100
D          500
M          1,000

Remember that there can't be more than 3 identical symbols in a row.

📌 Needs ) 입력한 모든 정수를 로마 기호로 만들어라.

📁 Sol ) map과 while 반복문 활용

function solution(number) {
  // convert the number to a roman numeral
  let result   = '',
      decimals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
      roman    = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];

  decimals.map(function (value, index) {
    while (number >= value) {
      result += roman[index];
      number -= value;
    }
  });
  
  return result;
}

💡 Other ways to solve ) forEach 사용

function solution(number) {
  // convert the number to a roman numeral
  let arr = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
  let arr2 = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
  let str = '';
  
  arr.forEach(function(item,index) {
    while (number - item >= 0){
      str += arr2[index];
      number -= item;
    }
  });

  return str;
}
profile
하늘이의 개발 일기

0개의 댓글