미누에요
[백준1267번] 핸드폰 요금 - C99 본문
728x90
반응형
SMALL
30초마다 10원씩 청구되는 '영식 요금제' 와 60초마다 15원씩 청구되는 '민식 요금제' 중 어떤 요금제가 저렴한지 계산하는 문제이다.
영식 요금제는 29초까지 10원, 30~59초까지 20원 과 같은 형식이고
민식 요금제는 59초까지 15원, 60~119원까지 30원이다.
조금 쉽게 판단하기 위해 영식 요금제와 민식 요금제를 각각 계산하여
각 요금제에 해당하는 금액을 나중에 곱하였다.
#include <stdio.h>
int main(void) {
int n; // 통화시간의 개수
int val[21]; // 각 개수별 통화시간
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &val[i]);
}
int payM = 0; // 민식 요금제로 계산할 시 얼마인지
int payY = 0; // 영식 요금제로 게산할 시 얼마인지
for (int i = 0; i < n; i++) {
if (val[i] % 30 == 0) { // 사용시간이 30으로 나누어떨어지면
payY += val[i] / 30 + 1; // 30을 나눈 몫 + 1
} else { // 사용시간이 30으로 나누어떨어지지 않을 때
if (val[i] < 30) { // 그리고 사용시간이 30보다 작을 때
payY += 1; // 1포인트
} else { // 30보다 크거나 같을 때
payY += val[i] / 30 + 1; // 30을 나눈 몫 + 1 포인트
}
}
if (val[i] % 60 == 0) { // 사용시간이 60으로 나누어떨어질때
payM += val[i] / 60 + 1; // 60을 나눈 몫 + 1 포인트
} else { // 사용시간이 60으로 나누어떨어지지 않을 때
if (val[i] < 60) { // 그리고 사용시간이 60보다 작을 때
payM += 1; // 1포인트
} else { // 그리고 60보다 크거나 같을 때
payM += val[i] / 60 + 1; // 60을 나눈 몫 + 1 포인트
}
}
}
// 포인트이므로 각 요금인 10원, 15원을 곱함.
payY *= 10;
payM *= 15;
if (payM > payY) { // 민식 요금제가 영식 요금제보다 비쌀 때
printf("%c %d", 'Y', payY);
} else if (payM < payY) { // 영식 요금제가 더 비쌀 때
printf("%c %d", 'M', payM);
} else if (payM == payY) { 두 요금제의 가격이 같을 때
printf("%c %c %d", 'Y', 'M', payY);
}
return 0;
}
소스 코드는 위와 같다.
728x90
반응형
LIST
'알고리즘' 카테고리의 다른 글
[백준 1284번] 집 주소 - C99 (0) | 2023.06.07 |
---|---|
[백준 9063번] 대지 - C99 (1) | 2023.06.06 |
[백준25704번] 출석 이벤트 - C99 (1) | 2023.06.06 |
[백준 5524번] 입실 관리 - C99 (0) | 2023.06.06 |
[백준 4470번] 줄번호 - C99 (0) | 2023.06.06 |