Given a set of coin denominators, find the minimum number of coins to give a certain amount of change.
File: Denominator.java
-------------------------------------------------------------
package org.developersbrain.solutions;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Denominator {
String currency;
Properties prop;
InputStream inS;
Denominator(){
currency = "INR";//Default Currency
prop = null;
}
Denominator(String currency) throws IOException{
this.currency = currency;
prop = new Properties();
inS = new FileInputStream("DenominatorSpec.properties");
prop.load(inS);
}
String returnDenominations(int amount){
String strDenom="";
String strAmount=""+amount;
int denom = 0,denomOther=0,tmpDenom=0;
String denomValue;
int d=0;
int m=1;
for(int i=0,j=1;i<strAmount.length();i++){
denom = amount%10;
denomValue=prop.getProperty(currency+"."+m);
if(denomValue != null){
if(denom>0 && prop.getProperty(currency+"."+(m*10))!=null){
strDenom=strDenom+("\n"+m+" * "+denom);
}
tmpDenom=denom;
m=m*10;
}else{
denomOther=denomOther+(denom*j);
j=j*10;
}
amount=amount/10;
}
if(tmpDenom>0 && !strDenom.equals("\n"+(m/10)+" * "+(tmpDenom+denomOther))){
if(denomOther>0){
denomOther=denomOther*10;
}
strDenom= strDenom+"\n"+(m/10)+" * "+(tmpDenom+denomOther);
}
return strDenom+"\n"+currency;
}
}
-------------------------------------------------------------
package org.developersbrain.solutions;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Denominator {
String currency;
Properties prop;
InputStream inS;
Denominator(){
currency = "INR";//Default Currency
prop = null;
}
Denominator(String currency) throws IOException{
this.currency = currency;
prop = new Properties();
inS = new FileInputStream("DenominatorSpec.properties");
prop.load(inS);
}
String returnDenominations(int amount){
String strDenom="";
String strAmount=""+amount;
int denom = 0,denomOther=0,tmpDenom=0;
String denomValue;
int d=0;
int m=1;
for(int i=0,j=1;i<strAmount.length();i++){
denom = amount%10;
denomValue=prop.getProperty(currency+"."+m);
if(denomValue != null){
if(denom>0 && prop.getProperty(currency+"."+(m*10))!=null){
strDenom=strDenom+("\n"+m+" * "+denom);
}
tmpDenom=denom;
m=m*10;
}else{
denomOther=denomOther+(denom*j);
j=j*10;
}
amount=amount/10;
}
if(tmpDenom>0 && !strDenom.equals("\n"+(m/10)+" * "+(tmpDenom+denomOther))){
if(denomOther>0){
denomOther=denomOther*10;
}
strDenom= strDenom+"\n"+(m/10)+" * "+(tmpDenom+denomOther);
}
return strDenom+"\n"+currency;
}
}
File;MainClass.java
-------------------------
package org.developersbrain.solutions;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) throws IOException{
Denominator dn=new Denominator("JPY");
System.out.println(dn.returnDenominations(12345));
}
}
Properties File: DenominatorSpec.properties
------------------------------------------------------------------
INR.1=1
INR.2=2
INR.5=5
INR.10=10
INR.20=20
INR.50=50
INR.100=100
INR.500=500
INR.1000=1000
JPY.1=1
JPY.5=5
JPY.10=10
JPY.50=50
JPY.100=100
JPY.500=500
JPY.1000=1000
JPY.5000=5000
JPY.10000=10000
Program Output:
---------------------------------------------------------------------------
1 * 5
10 * 4
100 * 3
1000 * 2
10000 * 1
JPY
Comments
Post a Comment