Skip to main content

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;
}



}

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

Popular posts from this blog

CODILITY: Determine whether given string of parentheses is properly nested.

Task description A string S consisting of N characters is called  properly nested  if: S is empty; S has the form " (U) " where U is a properly nested string; S has the form " VW " where V and W are properly nested strings. For example, string " (()(())()) " is properly nested but string " ()) " isn't. Write a function: class Solution { public int solution(String S); } that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise. For example, given S = " (()(())()) ", the function should return 1 and given S = " ()) ", the function should return 0, as explained above. Assume that: N is an integer within the range [ 0 .. 1,000,000 ]; string S consists only of the characters " ( " and/or " ) ". Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(1) (not counting the storage requi...

Distinct: Compute number of distinct values in an array.

Task description Write a function class Solution { public int solution(int[] A); } that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A. Assume that: N is an integer within the range [ 0 .. 100,000 ]; each element of array A is an integer within the range [ −1,000,000 .. 1,000,000 ]. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3. Complexity: expected worst-case time complexity is O(N*log(N)); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. class Solution { public int solution ( int [] A) { // write your code in Java SE 8 int len=A.length; int count= 1 ; ...

change directory (cd) function for an abstract file system ( Java Implementation )

Write a function that provides change directory (cd) function for an abstract file system. Notes: Root path is '/'. Path separator is '/'. Parent directory is addressable as "..". Directory names consist only of English alphabet letters (A-Z and a-z). For example, new Path("/a/b/c/d").cd("../x").getPath() should return "/a/b/c/x". Note: The evaluation environment uses '\' as the path separator. public class Path {     private String path;     public Path(String path) {         this.path = path;     }     public String getPath() {         return path;     }     public Path cd(String newPath) {         //throw new UnsupportedOperationException("Waiting to be implemented."); String[] newP=newPath.split("/");     String[] oldP=path.split("/");     int lnCount=0;     for(String str:newP){     if(st...