알고리즘
Programmers - 예산에 맞는 물건 구매
준준영
2019. 12. 14. 21:31
예산에 맞는 물건 구매
문제설명
두 가지 물품을 구매할 수 있도록 예산을 배정받았습니다, 첫 번째 물품의 가격은 a원, 두 번째 물품의 가격은 b원 입니다. 각 물품은 여러 개 구매할 수 있으며, 구매하지 않아도 괜찮습니다.
물품을 구매하는 여러 가지 방법 중, 예산을 남기지 않고 물품을 구매하는 방법의 수를 구하려 합니다. 예를 들어 예산이 23000원이고, 첫 번째 물품의 가격 a = 3000원, 두 번째 물품의 가격 b = 5000원인 경우, 예산에 딱 맞게 물건을 구매하는 방법은 다음과 같이 두 가지 방법이 있습니다.
- 첫 번째 물품을 1개(3000원), 두 번째 물품을 4개(20000원) 구매합니다.
- 첫 번째 물품을 6개(18000원), 두 번째 물품을 1개(5000원) 구매합니다.
위 두 가지 방법 외에 예산을 남기지 않고 물품을 구매할 수 있는 방법은 없습니다.
첫 번째 물품의 가격 a, 두 번째 물품의 가격 b, 예산 budget이 매개변수로 주어질 때, 예산을 남기지 않고 물품을 구매하는 방법의 가짓수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- a는 1 이상 10,000 이하의 자연수입니다.
- b는 1 이상 10,000 이하의 자연수입니다.
- budget은 1 이상 1,000,000 이하의 자연수입니다.
입출력 예 설명
입출력 예 #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문을 이용해서 순차적으로 경우의 수를 따져가며 값을 구하도록 코드를 작성하였습니다.