[코테]/[GroomEdu]
[COS PRO 2급] 6차 5번_음료수 마시기 (빈병으로 음료수를 사세요!) (C/C++)
Sky_
2021. 5. 29. 21:55
□문제 설명
X마트에서는 빈 병 n개와 음료수 한 병을 교환해줍니다.
예를 들어, 현재 가진 돈이 8원, 음료수 한 병은 2원이고 n이 4라면 음료수 4개를 살 수 있습니다. 음료수 네개를 다 마신 후, 남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있습니다. 따라서 8원으로는 음료수를 총 5병 마실 수 있습니다.

가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어질 때, 마실 수 있는 총 음료수의 수를 return하도록 solution함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
□매개변수 설명
가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어집니다.
- 가진 돈 money는 1 이상 1,000 이하인 자연수입니다.
- 음료수 한 병의 가격 price는 1 이상 100 이하인 자연수입니다.
- 음료수 한 병과 교환하는데 필요한 빈 병의 수 n은 3 이상 10 이하인 자연수입니다.
□예시
money | price | n | return | |
예시 #1 | 8 | 2 | 4 | 5 |
예시 #2 | 6 | 2 | 2 | 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);
}
□완성 코드
#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);
}
□코드 분석
단계 | 과정 |
main | 가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n의 값을 각각 할당한다. solution함수를 호출한다. |
solution | 가지고 있는 빈병의 갯수 empty_bottle과 마실 수 있는 총 음료수의 수 answer에 현재 가지고 있는 돈으로 산 병의 갯수(money/price)의 값을 할당한다. |
solution - while | n의 값보다 빈병의 갯수 empty_bottle가 큰동안 반복한다. 빈병을 마트에 가져다주면, 그 병의 수만큼 가지고 있는 빈병의 갯수에서 제외한다. empty_bottle = empty_bottle - n; 마트에 가져다줄 때마다 새로운 병(곧 빈병)을 하나씩 얻는다. answer++; 새로 받은 병은 곧 가지고있는 빈병에 추가되므로, empty_bottle이 1씩 증가한다. empty_bottle++; |
solution | 마실 수 있는 총 음료수의 수 answer를 return한다. |
main | 결과값(answer) ret를 출력한 후 프로그램을 종료한다. |
COS PRO 2급 기출문제 - C언어 - 구름EDU
YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.
edu.goorm.io