Cospro 2급/C언어

[5차] 문제3. 벌금을 세금내듯 내면 안되요. 벌금 구하기! 답안 및 풀이

SRin23 2021. 5. 24. 22:38

◇ 문제 설명

 모든 속도위반 차량이 낼 벌금이 총 몇 만원인지 알아내려 합니다. 벌금을 매기는 기준은 다음과 같습니다.

기준 벌금
규정 속도 10% 이상 20% 미만 위반 3만원
규정 속도 20% 이상 30% 미만 위반 5만원
규정 속도 30% 이상 7만원
 예를 들어 규정속도가 100인 도로를 112로 달렸다면 규정 속도를 12% 위반하였습니ㅏㄷ. 따라서 규정 속도를 10%이상 20%미만 위반하였으므로 벌금 3만원을 부과합니다.
규정 속도 speed, 도로를 달리는 모든 차의 속도가 담긴 배열 cars, 배열 cars의 길이 cars_len이 매개변수로 주어질때, 총 벌금은 몇 만원인지 return하도록 solution함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

 

◇ 매개변수 설명

규정 속도 speed, 도로를 달리는 모든 차의 속도가 담긴 배열 cars, 배열 cars의 길이 cars_len이 solution함수의 매개변수로 주어집니다.
 ▶ 규정속도는 30이상 140이하이며, 10으로 나누어 떨어지는 숫자입니다.
 ▶ cars_len은 1이상 40이하인 자연수입니다.
 ▶ 모든 차는 0km/h 이상 200km/h 이하로 달립니다.

 

◇ return값 설명

도로에서 달리는 모든 차의 벌금은 총 몇만원인지 return해주세요

 

◇ 예시

speed cars cars_len return
100 [110, 98, 125, 148, 120, 112, 89] 7 23

 

◇ 예시 설명

기준 위반 차량 총벌금
규정 속도 10% 이상 20% 미만 위반 2대 6만원
규정 속도 20% 이상 30% 미만 위반 2댜 10만원
규정 속도 30% 이상 1대 7만원

 

◇ 초기 내용

[출처]goormedu COSPRO 2급 기출문제 [5차] 문제3 초기내용


◇ 답안

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

int solution(int speed, int cars[], int cars_len) {
    int answer = 0;
    
    for(int i = 0; i < cars_len; i++) {
        if(cars[i] >= speed * 11 / 10 && cars[i] < speed * 12 / 10)
            answer += 3;
        else if(cars[i] >= speed * 12 / 10 && cars[i] < speed * 13 / 10)
            answer += 5;
        else if(cars[i] >= speed * 13 / 10)
            answer += 7;
    }
    
    return answer;
}

int main() {
    int speed = 100;
    int cars[] = {110, 98, 125, 148, 120, 112, 89};
    int cars_len = 7;
    int ret = solution(speed, cars, cars_len);

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

 

◇ 답안 힌트

더보기

    ▶ for문 안의 if문 조건인 speed * 11 / 10은 규정속도 10%를 나타냅니다.

    ▶ 문제 내의 조건을 잘 확인하세요

◇ 답안 풀이

(※ 실행 흐름 순으로 해석됩니다.)

int solution(int speed, int cars[], int cars_len) {
    int answer = 0;
    
    for(int i = 0; i < cars_len; i++) {
        if(cars[i] >= speed * 11 / 10 && cars[i] < speed * 12 / 10)
            answer += 3;

        // speed * 12 / 10 = speed * (12/10)과 같다. 

        // 12/10 = 120/100으로, 규정 속도 100%보다 20%큰 값을 나타낸다.

        // 만약, 규정속도보다 20%이상, 30%미만 빠르면 5만원을 더한다
        else if(cars[i] >= speed * 12 / 10 && cars[i] < speed * 13 / 10)
            answer += 5;

        // 만약, 규정속도보다 30%이상 빠르면 7만원을 더한다
        else if(cars[i] >= speed * 13 / 10)
            answer += 7;
    }
    
    return answer;
}

 

◇ 실행결과

[5차] 문제 3) 벌금을 세금내듯 내면 안되요. 벌금 구하기! 실행결과

 

◇ 출처

https://edu.goorm.io/learn/lecture/16921/cos-pro-2%25EA%25B8%2589-%25EA%25B8%25B0%25EC%25B6%259C%25EB%25AC%25B8%25EC%25A0%259C-c%25EC%2596%25B8%25EC%2596%25B4

 

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

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io