음료수 마시기.(빈병으로 음료수를 사세요!)
문제 설명
X 마트에서는 빈 병 n개와 음료수 한 병을 교환해준다.
예를 들어 현재 가진 돈이 8원, 음료수 한병은 2원이고 n이 4라면 음료수 4개를 살 수 있다. 음료수 네 개를 다 마신 후, 남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있다. 따라서 8원으로는 음료수를 총 5병 마실 수 있다.
가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어질 때, 마실 수 있는 총 음료수의 수를 return 하는 solution 함수를 완성한다.
매개변수 설명
가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어진다.
가진 돈 money는 1 이상 1000 이하인 자연수이다.
음료수 한 병의 가격 price는 1 이상 100 이하인 자연수이다.
음료수 한 병과 교환하는데 필요한 빈 병의 수 n은 3 이상 10 이하인 자연수이다.
return 값 설명
마실 수 있는 총 음료수의 수를 return 한다.
예시
예시 설명
예시 1)
현재 가진 돈이 8원, 음료수 한병은 2원이고 n이 4라면 음료수 4개를 살 수 있다. 음료수 네 개를 다 마신 후, 남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있다. 따라서 8원으로는 음료수를 총 5병 마실 수 있다.
예시 2)
1. 6원으로 2원짜리 음료수 3개를 산다.
2. 음료를 다 마시면 빈 병 3개가 남는다. 이중 빈뎡 두개를 가져가 새 음료수를 한 병과 교환한다.
3. 음료를 마시면 빈 병 2개가 남는다. 이를 새 음료수 한병으로 교환한다.
따라서 총 6원으로는 음료수 5병을 마실 수 있다.
코드 설명
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int money, int price, int n) {
int answer = 0; //마실 수 있는 음료의 수
int empty_bottle = answer = money / price;
while(n <= empty_bottle) {
empty_bottle = empty_bottle - n;
answer++;
empty_bottle++; //자기가 가지고 있는 빈병 수
}
return answer;
}
int main() {
int money1 = 8;
int price1 = 2;
int n1 = 4;
int ret1 = solution(money1, price1, n1);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret1);
int money2 = 6;
int price2 = 2;
int n2 = 2;
int ret2 = solution(money2, price2, n2);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret2);
}
empty_bottle = empty_bottle - n;
음료를 마신 후 나온 빈 병을 마트에 가져가 새 음료수로 교환하면 빈병의 수는 줄어든다. 그렇기 때문에 n을 더하는 것이 아닌 빼준다. 이때 음료수 하나를 먹었으니 answer를 더해주고 이 먹은 음료수는 빈 병이 되기 때문에 empty_bottle도 더해준다.
'cospro2급 > cospro_6차' 카테고리의 다른 글
2021-05-30 / 6번 문제 (0) | 2021.05.30 |
---|---|
2021-05-30 / 7번 문제 (0) | 2021.05.30 |
2021-05-30 / 10번 문제 (0) | 2021.05.30 |
2021-05-29 / 8번 문제 (0) | 2021.05.30 |
2021-05-29 / 3번 문제 (0) | 2021.05.29 |