티스토리 뷰
□문제 설명
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
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 6차 7번_의자와 책상을 사고싶어요 (C/C++) (0) | 2021.05.29 |
---|---|
[COS PRO 2급] 6차 6번_비밀번호는 만드는것 보다 검사하는게 힘들죠 (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 4번_카드뽑기 게임! (도박은 안되요!) (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 3번_단체 유니폼 맞추기 (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 2번_종이 나누어 주기 (C/C++) (0) | 2021.05.28 |
댓글
공지사항
최근에 올라온 글
TAG
- YBM기출
- 연습문제
- Cos Pro
- C
- cospro기출
- c언어 기출문제
- CosPro
- 구름 기출문제
- 구름에듀
- 프로그래머스
- 구름에듀 기출문제
- lv1
- 기출문제
- C++
- cospro기출문제
- programmers
- groom
- 배열활용문제
- lv2
- 자바
- 알고리즘
- Java
- 코딩테스트
- 배열
- groomedu
- COSPRO 2급
- YBM
- 1급
- 코스프로
- c언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함