[CodeWars] 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”
cs

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.


My Solution

string solution(int number){
    string result;
    int numbers[13= { 1000900500400100905040109541 };
    string romanNumbers[13= { “M”“CM”“D”“CD”“C”“XC”“L”“XL”“X”“IX”“V”“IV”“I” };

    for(int numberIdx = 0; numberIdx < 13++numberIdx)
    {
        if(number/numbers[numberIdx] > 0)
        {
            for (int j = 0; j < number / numbers[numberIdx]; ++j) {
                result += romanNumbers[numberIdx];
            }

            number %= numbers[numberIdx];
        }
    }

    return result;
}
cs

Because 4 and 9 in Roman numerals were unique cases, 4 and 9 in all digits were grouped separately and applied to the arrangement. The rest is the same as the algorithm for digits.


글쓴이: BakJH

Student of Daedeok SW Meister Highschool, in Korea.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중