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

[No. 35] 다이어트하는 A씨의 추가 운동 여부 알려주기 / cos pro 2급 c언어 기출 문제

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

다이어트하는 A 씨의 추가 운동 여부 알려주기


문제 설명

 

열량 적힌 식단표가 있습니다. 

다이어트를 하는 A씨는 오늘 먹는 열량이 그동안 먹은 식단이 열량 중 최솟값보다 큰 경우 운동을 하여 그 차이만큼을 소모합니다. 

 

식단의 열량을 담고 있는 배열 calorie, calorie의 길이 calorie_len이 매개변수로 주어질 떄, 운동으로 소모하는 총열량을 return 하도록 solution 함수를 작성했습니다. 

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

 


예시

calorie calorie_len return
[713, 665, 873, 500, 751] 5 459

수정해야할 코드

더보기
int solution(int calorie[], int calorie_len) {
    int min_cal = 0;
    int answer = 0;
    for(int i=0; i<calorie_len; i++) {
        if(calorie[i] > min_cal)
            answer += calorie[i] - min_cal;
        else
            min_cal = calorie[i];
    }
    return answer;
}

수정

int min_cal = 0;
→ int min_cal = calorie[0];

 

배열 안에서 최솟값을 구할 경우 초깃값으로 배열 0을 준다. 

 

코드 해석 및 전체 코드

 

min_cal ) 칼로리의 최솟값을 담을 변수로, 초깃값을 배열 0방으로 준다. 

 

answer ) 운동으로 소모하는 총열량을 반환할 변수

 

for ) 0 ~ calorie_len -1까지 반복한다.

 

if )

칼로리 i가 min_cla보다 클 경우 answer에 칼로리 i - min_cal을 더한다. 

칼로리 i가 min_cla보다 작을 경우 min_cal의 값으로 바꾼다. 

i calorie if if문 만족 시 
answer
if문 만족하지 않을 시
min_cal
0 713 713 > 0   = 713
1 665 665 > 713   = 665
2 873 873 > 665 + 208  
3 500 500 > 665   = 500
4 751 751 > 500 + 251  

answer에는 208과 251이 더해져 총 459이다. 

그래서 운동으로 소모하는 총열량은 459이다. 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int calorie[], int calorie_len) {
    int min_cal = calorie[0];
    int answer = 0;
    for (int i = 0; i < calorie_len; i++) {
        if (calorie[i] > min_cal)
            answer += calorie[i] - min_cal;
        else
            min_cal = calorie[i];
    }
    return answer;
}
int main() {
    int calorie[] = { 713, 665, 873, 500, 751 };
    int ret = solution(calorie, 5);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

cos pro 2급 기출문제

github

 

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

[4차] 문제5) 다이어트하는 A씨의 추가 운동 여부 알려주기

 

반응형

댓글