별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

JOI군이 살고 있는 지역에는 X사와 Y사, 두 개의 수도회사가 있다. 두 회사의 수도요금은 한 달간 수도의 사용량에 따라 다음과 같이 정해진다.

  • X사 : 1리터당 A엔.
  • Y사 : 기본요금은 B엔이고, 사용량이 C리터 이하라면 요금은 기본요금만 청구된다. 사용량이 C리터가 넘었을 경우 기본요금 B엔에 더해서 추가요금이 붙는다. 추가요금은 사용량이 C리터를 넘었을 경우 1리터를 넘었을 때마다 D엔이다.

JOI군의 집에서 한 달간 쓰는 수도의 양은 P리터이다.

수도요금이 최대한 싸게 되도록 수도회사를 고를 때, JOI군의 집의 1달간 수도요금을 구하여라.

 

 

입력

입력은 5줄이고 한 줄에 하나씩 정수가 입력된다.

  • 첫 번째 줄에는 X사의 1리터당 요금 A가 입력된다.
  • 두 번째 줄에는 Y사의 기본요금 B가 입력된다.
  • 세 번째 줄에는 Y사의 요금이 기본요금이 되는 사용량의 상한 C가 입력된다.
  • 네 번째 줄에는 Y사의 1리터 당 추가요금 D가 입력된다.
  • 다섯 번째 줄에는 JOI군의 집에서 사용하는 한 달간 수도의 양 P가 입력된다.

입력되는 정수 A,B,C,D,P는 전부 1 이상 10000 이하이다.

 

 

출력

JOI군의 집에서 지불하는 한 달간 수도요금을 첫째 줄에 출력한다.

 

 

예제 입력 1

 9

 100

 20

 3

 10

 

예제 출력 1

 90

 


예제 입력 2

 8

 300

 100

 10

 250

 

예제 출력 2

 1800

 

 

힌트

입출력예제 1에서, JOI군의 집에서 사용하는 수도의 양은 10리터이다.

  • X사의 수도요금은 9 × 10 = 90엔이다.
  • JOI군의 집에서 사용한 양이 20리터 이하이므로 Y사의 수도요금은 기본요금인 100엔이다.

JOI군의 집은 수도요금이 더 싼 X사를 고르고, 이때의 한 달치 수도요금은 90엔이다.

입출력예제 2에서, JOI군의 집에서 사용하는 수도의 양은 250리터이다.

  • X사의 수도요금은 8 × 250 = 2000엔이다.
  • JOI군의 집에서 사용한 양이 100리터 이상이므로 초과량은 250 - 100 = 150리터이다. 따라서 Y사의 수도요금은 기본요금인 300엔에 더해서 10 × 150 = 1500엔의 추가요금이 붙고, 총 요금은 300 + 1500 = 1800엔이 된다.

JOI군의 집은 수도요금이 더 싼 Y사를 고르고, 이때의 한 달치 수도요금은 1800엔이다. 

 


출처

Olympiad > 일본정보올림피아드 예선 > JOI 2015 예선 1번

· 문제의 오타를 찾은 사람: eric00513

· 문제를 번역한 사람: pinebananais

 

 

알고리즘 분류

· 구현

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
 
int main() {
    //
    /* A : X사의 1리터당 요금
     * B : Y사의 기본요금
     * C : Y사의 요금이 기본요금이 되는 사용량의 상한
     * D : Y사의 1리터 당 추가요금
     * P : JOI군의 집에서 사용하는 한 달간의 수도의 양
     */
    int A, B, C, D, P, priceX, priceY;
    
    cin >> A >> B >> C >> D >> P;
    
    priceX = P * A;    // X사의 요금
    if (C < P) {    // 한 달간의 수도의 양이 기본요금이 되는 사용량의 상한을 넘었을 경우
        priceY = B + ((P - C) * D);
    }
    else {
        priceY = B;
    }
    
    if (priceX < priceY) {
        cout << priceX << endl;
    }
    else {
        cout << priceY << endl;
    }
    
    return 0;
}



728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ1748][C++] 수 이어 쓰기 1  (0) 2018.10.03
[BOJ2884][C++] 알람 시계  (0) 2018.10.03
[BOJ5063][C++] TGN  (0) 2018.10.03
[BOJ2822][C++] 점수 계산  (0) 2018.10.03
[BOJ5597][C++] 과제 안 내신 분..?  (0) 2018.10.02
[BOJ5543][C++] 상근날드  (0) 2018.10.01
[BOJ2490][C++] 윷놀이  (0) 2018.10.01
[BOJ12791][C++] Starman  (0) 2018.10.01
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖