본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.55] 6차 문제 5 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 30.
반응형

6차 문제 5


문제 설명


X 마트에서는 빈 병 n개와 음료수 한 병을 교환해줍니다.

예를 들어, 현재 가진 돈이 8원, 음료수 한 병은 2원이고 n이 4라면 음료수 4개를 살 수 있습니다. 음료수 네 개를 다 마신 후, 남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있습니다. 따라서 8원으로는 음료수를 총 5병 마실 수 있습니다.

가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어질 때, 마실 수 있는 총 음료수의 수를 return 하도록 solution 함수를 작성했습니다. 

그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.

 


예시

 

money price n return 
8 2 4 5
6 2 2 5

 

예시 2
1. 6원으로 2원짜리 음료수 3개를 삽니다.
2. 음료를 다 마시면 빈 병 3개가 남습니다. 이 중 빈 병 두 개를 가져가 새 음료수 한 병과 교환합니다.
3. 음료를 마시면 빈 병 2개가 남습니다. 이를 새 음료수 한 병으로 교환합니다.
따라서 총 6원으로는 음료수 5병을 마실 수 있습니다.


수정해야 할 코드

더보기
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;
}

 

수정

empty_bottle = empty_bottle + n;
→ empty_bottle = empty_bottle - n;

 

코드 해석 및 전체 코드

 

현재 가진 돈으로 음료수를 몇 개를 살 수 있고,

음료수를 마신 뒤 빈병으로 음료수를 교환해

총 음료수를 몇 병 마실 수 있는지 구해야 한다. 

예시 2로 적용

empty_bottle은 빈 병을 나타내며, answer는 마실 수 있는 총음료수의 수이다.

 

int empty_bottle = answer = money / price )현재 가진 돈으로 몇 병을 살 수 있는지 값을 저장한다. 6 / 2 = 3

 

while문에서 empty_bottle이 n보다 크거나 같을 때까지 반복한다.

n은 1병으로 교환할 수 있는 빈 병의 수이고, empty_bottle은 내가 가지고 있는 빈 병의 수이다. 

그러므로 empty_bottle이 n보다 작으면 (내가 가진 빈 병이 교환할 수 있는 빈 병의 수보다 작으면) 교환할 수 없으므로 while문을 수행할 수 없다. 

 

empty_bottle이 n보다 크거나 같다면 empty_bottle에서 n만큼 뺀다. 

= 교환이 가능하므로 한 병을 교환하기 위해 n개를 슈퍼에 반납한다. 

내 음료수가 한 개가 증가했으므로 answer를 1 증가한다. 

또한 내가 음료수를 마셔서 빈 병이 생겼으므로 empty_bottle도 1 증가한다. 

 

while( n <= empty_bottle) empty_bottle -= n answer empty_bottle
2 <= 3
O
3 - 2 = 1 answer++ = 4 empty_bottle++ = 2
2열에서 빈 병의 수 1됨. 
2 <= 2
O
2 - 2 = 0 answer++ = 5 empty_bottle++ = 1
2 <= 1
X
     

따라서 총 음료수의 수는 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);
}

 


cos pro 2급 기출문제

github

 

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

 

반응형

댓글