A사 : 1리터당 P원의 돈을 내야 함.
B사 : 기본 요금이 Q원이고, 월간 사용량이 R리터 이하인 경우 기본요금, 그 이상이면 초과량에 대해 1리터당 S원의 요금을 더 냄.
한 달간 사용하는 수도의 양은 W리터, 요금이 더 저렴한 회사의 요금은?
A사는 W*P원,
B사는 R리터 이상인지 이하인지 구분해 이상이면 Q+(W-R)*S원, 이하면 Q원이다.
//SWEA1284 수도 요금 경쟁
#include <stdio.h>
#include <stdlib.h>
int main(void){
int p, q, r, s, w, i, money;
int testCase;
int *answer;
scanf("%d", &testCase);
answer = (int*)malloc(sizeof(int)*testCase);
for(i=0; i<testCase; i++){
scanf("%d%d%d%d%d", &p, &q, &r, &s, &w);
if(w>r){
money = q+s*(w-r);
}else{
money = q;
}
if(money>p*w){
money = p*w;
}
answer[i] = money;
}
for(i=0; i<testCase; i++) printf("#%d %d\n", i+1, answer[i]);
return 0;
}
b사의 요금을 먼저 계산한 후 b사가 a사의 요금보다 비싸면 a사의 요금으로 바꾼다.
다른방법
#include <stdio.h>
int main(void) {
int test_case, T;
scanf("%d", &T);
for (test_case = 1; test_case <= T; test_case++) {
int p, q, r, s, w;
int a, b;
scanf("%d%d%d%d%d", &p, &q, &r, &s, &w);
printf("#%d ", test_case);
a = p * w;
if (w <= r) {
b = q;
if (a > b) printf("%d\n", b);
else printf("%d\n", a);
}
else
{
b = q + (w - r) * s;
if (a > b) printf("%d\n", b);
else printf("%d\n", a);
}
}
return 0;
}
입력 받을 5개의 변수와 a사와 b사의 요금을 계산할 변수 a, b를 선언했다.
a는 요금이 일정하므로 그냥 계산하고, b는 w가 r이상일 때와 이하일 때를 나눈다. 케이스에 따라 다르게 계산해주고 a와 b를 비교해 적은 쪽을 출력한다.
'SWEA > [D2]' 카테고리의 다른 글
[C언어] SWEA 1961 숫자 배열 회전 (0) | 2020.08.16 |
---|---|
[C언어] SWEA 1204 최빈수 구하기 (0) | 2020.08.15 |
[C언어] SWEA 1970 쉬운 거스름돈 (0) | 2020.08.09 |
[C언어] SWEA 1989 초심자의 회문검사 (0) | 2020.08.09 |
[C언어] SWEA 1926 간단한 369게임 (0) | 2020.07.19 |