본문 바로가기
Programming/Cos Pro 1급

Cos Pro 1급 - 샘플 문제 풀이 2차 7번 (while문 활용)

by 우공80 2022. 10. 15.
728x90

거스름 돈 개수가 최소가 되게 하기

 

문제 지문 #7


한국에는 다음과 같이 8가지 종류의 화폐가 있습니다.

  • 동전 : 10원, 50원, 100원, 500원
  • 지폐 : 1,000원, 5,000원, 10,000원, 50,000원

손님에게 거슬러줘야 하는 금액이 주어질 때, 거슬러주는 동전과 지폐 개수의 합이 최소가 되도록 하려고 합니다.

예를 들어 거슬러줘야 할 금액이 2,760원이라면, 1,000원짜리 2장, 500원짜리 1개, 100원짜리 2개, 50원짜리 1개, 10원짜리 1개를 거슬러줄 때 동전과 지폐 개수의 합이 최소가 됩니다.

손님에게 거슬러줘야 하는 금액 money가 매개변수로 주어질 때, 거슬러 주는 동전과 지폐 개수 합의 최솟값을 return 하도록 solution 메서드를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

손님에게 거슬러줘야 하는 금액 money가 solution 메소드의 매개변수로 주어집니다.

  • money는 10 이상 100,000 이하의 자연수입니다.
  • money는 10의 배수로만 주어집니다.

return 값 설명

거슬러 주는 동전과 지폐 개수합의 최솟값을 return 해주세요.


예시

money return
2760 7

예시 설명

2760원을 거슬러주는 방법은 여러 가지가 있지만, 다음과 같이 거슬러 줄 때, 필요한 동전과 지폐 개수가 최소가 됩니다.

  • 1,000원 : 2장
  • 500원 : 1개
  • 100원 : 2개
  • 50원 : 1개
  • 10원 : 1개

따라서 7을 return 하면 됩니다.

혼자 풀이


빈칸 채우기 문제입니다.
큰 단위 화폐부터 차례로 나누어 몫과 나머지를 남기면서 계산해 가면 됩니다.
문제 자체는 어렵지 않은데, 알고리즘이 재미있습니다. 
만약 메서드 전체 구현하는 문제였으면 못 풀었을 수도 있을 것 같습니다.

/*******************************************
  2차 7번 거스름돈 개수가 최소가 되게 하기
 ******************************************/
class MySolution {
    public int solution(int money) {
        int coin[] = {10, 50, 100, 500, 1000, 5000, 10000, 50000};
        int counter = 0;
        int idx = coin.length - 1;  //단위가 큰 화폐부터 계산해 나감
        while (money > 0){
//            counter += @@@;
//            money %= @@@;
//            idx -= @@@;
            counter += money/coin[idx]; //몫을 구해서 counter에 더해줌
            money %= coin[idx]; // 나머지를 money에 다시 저장
            idx -= 1; //idx를 줄이며 순회
        }
        return counter;
    }

    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
    public static void main(String[] args) {
        MySolution sol = new MySolution();
        int money = 2760;
        int ret = sol.solution(money);

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
    }
}

 

정답


제가 풀이한 것과 동일합니다.

첨부파일

 

프로젝트 파일 전체를 첨부합니다.
Solution 이 문제, CorrectSolution 이 정답, MySolution이 제가 푼 것입니다.
"Project from existing sources..." 메뉴에서 불러다 쓰시면 됩니다.

SecondQuestion7.zip
0.01MB

출처: https://www.ybmit.com/cos_pro/cos_pro_r_test.jsp

728x90

댓글