남은 재료로 주스 만들기
문제 설명
주스 1잔을 만드려면 사과 3개, 당근 1개가 필요합니다. 토끼에게 주기 위해 사과와 당근 종류 상관없이 k개를 뺴놓으려고 합니다.
사과 개수 num_apple과 당근 개수 num_carrot, 토끼에게 줄 먹이 개수 k가 주어질 때 주스를 최대한 몇 잔 만들 수 있는지 return 하도록 solutino 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
num_apple | num_carrot | k | return | |
예시 1 | 5 | 1 | 2 | 1 |
예시 2 | 10 | 5 | 4 | 2 |
수정해야할 코드
int solution(int num_apple, int num_carrot, int k) {
int answer = 0;
if(num_apple < 3 * num_carrot)
answer = num_apple / 3;
else
answer = num_carrot;
num_apple -= 3 * answer; //1
num_carrot -= answer; //2
for(int i = 0; k - (num_apple + num_carrot + i) > 0; i++) // 0 ~ 1
if(i % 4 == 0)
answer--;
return answer;
}
수정
answer++; → answer--; |
answer은 주스를 최대 몇 잔 만들 수 있는지에 대한 변수이고,
k는 토끼에게 줄 간식의 개수이다.
for문은 토끼에게 간식 4개씩 몇번 줄 수 있는지에 대해 구하는 반복문으로, answer에 1을 더하는게 아니라 뺴야한다.
코드 해석 및 전체 코드
예시 2 매개변수로 세부 설명
answer ) 주스를 최대 몇 잔 만들 수 있는지 return 할 변수
if문 ) num_apple이 3 * num_carrot보다 작다면, answer은 num_apple / 3.
10(= num_apple)< 3 * 5(=num_carrot) → 10 < 15
answer = 10(= num_apple) / 3 = 3
else ) if 조건을 만족하지 않다면 answer은 num_apple.
num_apple ) num_apple에 3 * answer 만큼 뺀다.
num_apple = 10 - 9 = 1
num_carrot ) num_carrot에 answer 만큼 뺸다.
num_carrot = 5 - 3 = 2
for문 ) 0 ~ k - (num_apple + num_carrot + i)이 0보다 클 동안 반복한다.
if in for ) i를 4로 나누었을 때 나머지가 0이면 answer을 1 뺀다.
i | 4 - (3 + i) > 0 | 1 % 4 == 0 | answer |
0 | 4 - 3 > 0 O |
O | answer-- |
1 | 4 - 4 > 0 X |
i가 0일 때만 for문이 반복하고, 0일 때 if문을 만족하므로 answer에 1을 감소한다.
그래서 반환 값 answer은 2이다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int num_apple, int num_carrot, int k) {
int answer = 0;
if (num_apple < 3 * num_carrot)
answer = num_apple;
else
answer = num_carrot;
num_apple -= 3 * answer;
num_carrot -= answer;
for (int i = 0; k - (num_apple + num_carrot + i) > 0; i++)
if (i % 4 == 0)
answer--;
return answer;
}
int main() {
int num_apple1 = 5;
int num_carrot1 = 1;
int k1 = 2;
int ret1 = solution(num_apple1, num_carrot1, k1);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret1);
int num_apple2 = 10;
int num_carrot2 = 5;
int k2 = 4;
int ret2 = solution(num_apple2, num_carrot2, k2);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret2);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[3차] 문제7) 남은 재료로 주스 만들기
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.29] 주차장에 몇 대가 들어올 수 있는 거야? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.17 |
---|---|
[No.28] TV 애청자 A씨 / cos pro 2급 c언어 기출 문제 (1) | 2021.05.16 |
[No.26] 타일 색칠 방법 구하기 / cos pro 2급 c언어 기출 문제 (2) | 2021.05.15 |
[No.25] 여행객의 총 교통비 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.15 |
[No.24] 단어의 오타 수정하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.14 |
댓글