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

[No.27] 남은 재료로 주스 만들기 / cos pro 2급 c언어 기출 문제

M개발자 2021. 5. 16. 22:49
반응형

남은 재료로 주스 만들기


문제 설명

 

주스 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);
} 

cos pro 2급 기출문제

github

 

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

[3차] 문제7) 남은 재료로 주스 만들기

반응형