Minwoo Dev.

[백준1267번] 핸드폰 요금 - C99 본문

백준

[백준1267번] 핸드폰 요금 - C99

itisminu 2023. 6. 6. 10:32
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