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

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

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

남은 재료로 주스 만들기


문제 설명

 

주스 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) 남은 재료로 주스 만들기

반응형

댓글