예산에 맞는 물건 구매

문제설명

두 가지 물품을 구매할 수 있도록 예산을 배정받았습니다, 첫 번째 물품의 가격은 a원, 두 번째 물품의 가격은 b원 입니다. 각 물품은 여러 개 구매할 수 있으며, 구매하지 않아도 괜찮습니다.
물품을 구매하는 여러 가지 방법 중, 예산을 남기지 않고 물품을 구매하는 방법의 수를 구하려 합니다. 예를 들어 예산이 23000원이고, 첫 번째 물품의 가격 a = 3000원, 두 번째 물품의 가격 b = 5000원인 경우, 예산에 딱 맞게 물건을 구매하는 방법은 다음과 같이 두 가지 방법이 있습니다.

  1. 첫 번째 물품을 1개(3000원), 두 번째 물품을 4개(20000원) 구매합니다.
  2. 첫 번째 물품을 6개(18000원), 두 번째 물품을 1개(5000원) 구매합니다.
    위 두 가지 방법 외에 예산을 남기지 않고 물품을 구매할 수 있는 방법은 없습니다.
    첫 번째 물품의 가격 a, 두 번째 물품의 가격 b, 예산 budget이 매개변수로 주어질 때, 예산을 남기지 않고 물품을 구매하는 방법의 가짓수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • a는 1 이상 10,000 이하의 자연수입니다.
  • b는 1 이상 10,000 이하의 자연수입니다.
  • budget은 1 이상 1,000,000 이하의 자연수입니다.

입출력 예 설명

스크린샷 2019-12-14 오후 3 28 37

입출력 예 #1

문제의 예시와 같습니다.

public int solution(int a, int b, int budget){

  // 3000 , 5000, 23000
  int answer = 0;


  for (int i = 0; i*a < budget; i++) {
    for (int j = 0; j*b < budget; j++) {
      if((budget-(i*a+j*b))==0)
        answer++;
     }
   }

  return answer;
}

해당 문제의 출력결과는 예산(budget)이랑 구매 품목(a,b)의 개수가 정확하게 맞아 떨어지도록 구할 수 있는 경우의 수츨 출력하는게 목적입니다.
구매 물품 a,b는 budget(예산)을 넘지 못합니다. 이를 이용해서 이중 for문을 이용해서 순차적으로 경우의 수를 따져가며 값을 구하도록 코드를 작성하였습니다.

+ Recent posts