## 문제 ##
가게에 점원을 고용했는데 조금 띨띨해서 잔돈을 거슬러주는 것을 잘 하지 못한다. 구두쇠인 아저씨는 이로 인해서 손해가 나는 것을 알았다.
그래서 당신에게 손님에게 거슬러 줄 돈을 계산하는 프로그램을 만들어 달라고 부탁했다.
화폐 단위는 다음과 같다.
• quartes $0.25
• dimes $0.10
• nickels $0.05
• pennies $0.01
이 가게에서는 5 $ 이내로는 동전으로 거슬러 준다. 또한 그는 손님들이 가져가기 좋도록 동전의 개수를 가장 최소로 거슬러 주기를 원한다.
예를 들어, $1.24 인 경우 거슬러 줄 돈은
• 4 quarters
• 2 dimes
• 0 nickels
• 4 pennies
이다.
입력
입력으로 cents C 가 주어진다.(1 <= C <= 500)
출력
아래와 같은 형식으로 출력한다.
Q QUARTER(S), D DIME(S), n NICKEL(S), P PENNY(S)
Q,D,N,P 는 각각 quarter, dimes , nickels, pennys 수 이다.
입출력 예
입력
124
출력
4 QUARTER(S), 2 DIME(S), 0 NICKEL(S), 4 PENNY(S)
입력
25
출력
1 QUARTER(S), 0 DIME(S), 0 NICKEL(S), 0 PENNY(S)
입력
194
출력
7 QUARTER(S), 1 DIME(S), 1 NICKEL(S), 4 PENNY(S)
## 풀이 ##
m값을 주면 quarter, dime, nickel, penny순으로 사용동전 갯수배열을 리턴하는 메서드.
private void cChange(long m,int[] ch){
for(int i=0;i<BASE.length;i++){
ch[i] = (int)(m / BASE[i]);
m = m % BASE[i];
}
}
위에서 BASE = {25,10,5,1}
## 소스 ##
package p1;
public class MoneyChange {
private static final int[] BASE = {25,10,5,1};
public MoneyChange(){
doTest();
}
private void doTest(){
long inputMoney=0;
String outputStr="";
inputMoney = 124;
outputStr = calculateChange(inputMoney);
System.out.println(outputStr);
inputMoney = 25;
outputStr = calculateChange(inputMoney);
System.out.println(outputStr);
inputMoney = 194;
outputStr = calculateChange(inputMoney);
System.out.println(outputStr);
}
private String calculateChange(long m){
int[] ch = new int[BASE.length];
cChange(m,ch);
StringBuffer sb = new StringBuffer();
String[] str= {"QUARTER(S)","DIME(S)","NICKEL(S)","PENNY(S"};
for(int i=0;i<ch.length;i++){
sb.append(ch[i]+" "+str[i]+",");
}
return sb.toString();
}
private void cChange(long m,int[] ch){
for(int i=0;i<BASE.length;i++){
ch[i] = (int)(m / BASE[i]);
m = m % BASE[i];
}
}
public static void main(String[] args) {
new MoneyChange();
}
}
-끝-
'알고리즘 > 알고리즘(Java)' 카테고리의 다른 글
10. 1초에 한칸씩 격자를 움직이는 개미의 n초후 좌표 찾기 (0) | 2015.03.30 |
---|---|
06. 앞에서 읽을 때나, 뒤에서 읽을 때 모양이 같은수(대칭수) 찾기 (0) | 2015.03.30 |
04. 타일 채우기 가능여부 판단 알고리즘 (0) | 2015.03.30 |
03. 게시판 포스트 중첩부분 면적 구하기 (0) | 2015.03.27 |
02. 영문자 순열 순서 알아내기 (0) | 2015.03.27 |