티스토리 뷰

문제 설명

 

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를 출력한 후 프로그램을 종료한다.

 

 

 

 

 

 

 

 

 


 

 

GroomEdu

 

COS PRO 2급 기출문제 - C언어 - 구름EDU

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

 

댓글