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

[No.47] 계산대 두 개에서 계산 시간을 구해주세요! / cos pro 2급 c언어 기출 문제 5차 문제 7

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

5차 문제 7


문제 설명

XX 마트에선 구매할 물건이 3개 이하이면 소량 계산대에서, 그렇지 않으면 일반 계산대에서 계산해야 합니다. 두 계산대 모두 물건 한 개를 계산하는 데 1분이 걸립니다.

손님들이 구매할 물건 수가 담긴 배열 stuffs, 배열 stuffs의 길이 stuffs_len이 매개변수로 주어질 때, 모든 물건을 계산하는 데 필요한 시간을 return 하도록 solution 함수를 작성했습니다. 

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

 


예시

 

stuffs stuffs_len return
{5, 3, 4, 2, 3, 2} 6 10

 


수정해야 할 코드

더보기
int solution(int stuffs[], int stuffs_len) {
    int answer = 0;

    int small_counter = 0;
    int general_counter = 0;

    for(int i = 0; i < stuffs_len; i++) {
        if(stuffs[i] > 3)
            general_counter += stuffs[i];
        else
            small_counter += stuffs[i];
    }

    if(small_counter < general_counter)
        answer = small_counter;
    else
        answer = general_counter;

    return answer;
}

 

수정

if(small_counter < general_counter)
→ if(small_counter > general_counter)

 

코드 수정 전에는 small_counter(소량)가 general_counter(일반) 보다 작으면 answer는 small_counter라고 되어있지만

if문의 조건이 맞으면 small_counter가, 아니면 general_counter가 answer에 저장된다. 

 

한줄만 변경해야 하므로 if문 조건이 맞을 때 small_counter가 answer에 저장되기 위해선 small_counter가 general_counter보다 커야지만 프로그램이 정상적으로 작동한다. 

 

 

코드 해석 및 전체 코드

 

answer ) 모든 물건을 계산하는데 걸리는 시간을 반환할 변수

 

small_counter ) 소량 계산대에서 계산되는 시간을 저장할 변수

general_counter ) 일반 계산대에서 계산되는 시간을 저장할 변수

 

for ) 0 ~ sfuffs_len - 1까지 반복

if in for ) stuffs[i]의 값이 3보다 크면 general_counter를 stuffs[i]만큼 증가, 3 이하이면 small_counter를 stuffs[i]만큼 증가한다. 

소량 계산대에는 물건을 3개 이하일 때만 사용 가능하고, 물건 1개당 계산 시간이 1분 걸린다. 

i stuffs[i] if (stuffs[i] > 3) general_counter small_counter
0 5 O +5  
1 3 X   +3
2 4 O +4  
3 2 X   +2
4 3 X   +3
5 2 X   +2

general_counter은  5 + 4로 9이고, small_counter은 3 + 2 + 3+ 2로 10이다. 

 

if ) small_counter가 general_counter보다 클 경우 answer에 small_counter를 저장, 작을 경우 answer에 general_counter를 저장한다. 

answer는 모든 물건을 계산하는 시간을 반환하는 변수로 계산 시간이 더 큰 값을 반환한다. 

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

int solution(int stuffs[], int stuffs_len) {
    int answer = 0;

    int small_counter = 0;
    int general_counter = 0;

    for (int i = 0; i < stuffs_len; i++) {
        if (stuffs[i] > 3)
            general_counter += stuffs[i];
        else
            small_counter += stuffs[i];
    }

    if (small_counter > general_counter)
        answer = small_counter;
    else
        answer = general_counter;

    return answer;
}
int main() {
    int stuffs[6] = { 5, 3, 4, 2, 3, 2 };
    int stuffs_len = 6;
    int ret = solution(stuffs, stuffs_len);

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

cos pro 2급 기출문제

github

 

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

[5차] 문제7) 계산대 두개에서 계산시간을 구해주세요!

반응형

댓글