벌금을 세금내듯 내면 안되요. 벌금 구하기!
문제 설명
모든 속도위반 차량이 낼 벌금이 총 몇만 원인지 알아내려 한다. 벌금을 매기는 기준은 다음과 같다.
예를 들어 규정 속도가 100인 도로를 112로 달렸다면 규정 속도 12% 위반하였다. 따라서 규정 속도를 10% 이상 20% 미만 위반하였으므로 벌금 3만 원을 부과한다.
규정 속도 speed, 도로를 달리는 모든 차의 속도가 담긴 배열 cars, 배열 cars의 길이 car_len이 매개변수로 주어질 때, 총벌금은 몇만 원인지 return 하는 solution 함수를 완성한다.
매개변수 설명
규정 속도 speed, 도로를 달리는 모든 차의 속도가 담긴 배열 cars, 배열 cars의 길이 car_len이 매개변수로 주어진다.
규정 속도는 30 이상 140 이하이며, 10으로 나누어 떨어지는 숫자이다.
cars_len은 1 이상 40 이하인 자연수이다.
모든 차는 0km/h 이항 200km/h 이하로 달린다.
return 값 설명
도로를 달리는 모든 차의 벌금은 총 몇만 원인지 return 한다.
예시
예시 설명
코드 설명
#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(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;
}
첫번째 조건인 if(cars[i] >= speed * 11 / 10 && cars[i] < speed * 12 / 10) 은 10% 이상 20% 이하를 계산하는 프로그램이다. 여기서 20%면 0.2이지만 원래 속도인 speed도 더해줘야하므로 1.2를 곱해야한다. 나머지 경우에도 0.3이 아닌 1.3으로 계산하는 이유이다.
'cospro2급 > cospro_5차' 카테고리의 다른 글
2021-05-25 / 5번 문제 (0) | 2021.05.25 |
---|---|
2021-05-25 / 6번 문제 (0) | 2021.05.25 |
2021-05-24 / 4번 문제 (0) | 2021.05.24 |
2021-05-23 / 1번 문제 (0) | 2021.05.23 |
2021-05-23 / 2번 문제 (0) | 2021.05.23 |