Hello! So I’m doing a 30 day coding challenge where I solve a few questions every day and thought of posting them here on my blog so that you guys can join the challenge too!
Welcome to Coding challenge Day 20: Problem 1! Be sure to post your answers, queries etc in the comments!
Problem: Convert a given number to it’s Roman numeral equivalent
SYMBOL VALUE I 1 IV 4 V 5 IX 9 X 10 XL 40 L 50 XC 90 C 100 CD 400 D 500 CM 900 M 1000
Sample input: number=50
Output: Roman numeral: L
Sample input: number=534
Output: Roman numeral: DXXXIV
Solution:
I learnt to solve this one from this LINK
package misc;
public class Program004roman_numeral_converter {
public static int digit (char ch, int num, int i, char c[]){
for (int j=0; j<num; j++)
c[i++]=ch;
return i;
}
public static int sub_digit (char ch1, char ch2, int i, char c[]){
c[i++]= ch1;
c[i++]= ch2;
return i;
}
public static void roman_numeral (int number){
char [] c= new char[100];
int i=0;
if(number <=0){
System.out.println("Number less than 0");
return;
}
while(number!=0){
if(number>=1000){
i=digit ('M', number/1000, i,c);
number=number%1000;
}
else if (number>=500){
if(number<900){
i=digit ('D', number/500, i, c);
number%=500;
}
else {
i= sub_digit ('C', 'M', i, c);
number %= 100;
}
}
else if (number >=100){
if(number<400){
i= digit ('C', number/100, i, c);
number %= 100;
}
else {
i= sub_digit ('C', 'D', i, c);
number %= 100;
}
}
else if (number >=50){
if (number <90){
i= digit ('L', number/50, i, c);
number%=10;
}
else {
i=sub_digit ('X', 'C', i, c);
number %=10;
}
}
else if (number >= 10){
if (number < 40){
i= digit ('X', number/10, i, c);
number %=10;
}
else {
i= sub_digit ('X', 'L', i, c);
number%= 10;
}
}
else if (number >= 5){
if (number <9){
i= digit ('V', number/5, i, c);
number %= 5;
}
else {
i= sub_digit ('I', 'X', i, c);
number=0;
}
}
else if (number >= 1){
if (number <4){
i=digit ('I', number, i, c);
number=0;
}
else {
i= sub_digit ('I', 'V', i ,c);
number=0;
}
}
}
System.out.print("Roman numeral: ");
for (int j=0; j<i; j++){
System.out.printf("%c", c[j]);
}
}
public static void main (String [] args){
int number=50;
roman_numeral(number);
}
}
Download Code
Happy Learning!!