페이스북 생활코딩 그룹에 나온문제중 하나...
https://www.facebook.com/groups/codingeverybody/
"1원, 5원, 10원, 50원, 100원, 500원짜리가 각각 C1, C5, C10, C50, C100, C500개씩 있습니다. 가능한 적은 수의 동적으로 A원을 지불하려면, 몇 개의 동전이 있어야 할까요? 지불 방법은 적어도 1개는 존재한다고 가정합니다."
자바 개발자로서(?)
낼름 풀어보았다...
public static void main(String[] args) {
int val = 5323; // 입력값
int cv = 1000; // 500 -> 100 -> 50 으로 변할값.
int cx = 0, div = 0; // cx는 동전의 갯수 div는 2 : 5 스위치 값.
do {
div = (div == 2 ? 5 : 2); // 처음에 div 는 0이므로 div는 2가 되고
cv = cv / div; // cv는 500이된다.
cx += val / cv; // val / cv 는 정수값이므로, cx에 나누기의 몫이 들어가고
val = val % cv; // 나머지 값은 다음턴으로 넘긴다.
} while (cv != 1); // 1이 아니면 루프... do 아래 2번재 줄에서 cv 가 1이되어도 연산이 되므로 문제가 없다.
System.out.println(cx); // 대상 목적인 코인의 갯수만 출력 >.<.
}
댓글로 작성된 다른 능력자 분들의 코드를 보고 있자니..
아직 멀었구나 하는 생각만든다..( 파이썬 능력자님들 ㅎㄷㄷ , 스칼라도 배우고 싶다능 ... )
좋아하는것을 하나하나 쌓아가는 2013년이 되었으면 하는 바램으로 간만의 포스팅 끗..