백준 10707 수도요금

Han Gyul Kang·2021년 6월 23일
0

study_algorithm

목록 보기
1/6
  1. 문제

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

X사 : 1리터당 A엔.
Y사 : 기본요금은 B엔이고, 사용량이 C리터 이하라면 요금은 기본요금만 청구된다. 사용량이 C리터가 넘었을 경우 기본요금 B엔에 더해서 추가요금이 붙는다. 추가요금은 사용량이 C리터를 넘었을 경우 1리터를 넘었을 때마다 D엔이다.
JOI군의 집에서 한 달간 쓰는 수도의 양은 P리터이다.

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

  1. 입력

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

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

  1. 출력

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

package algorithm2021.month06;

import java.io.*;
import java.util.Scanner;

public class baek_10707 {
    public static void main(String[] args) throws IOException {
        // 입력 받을 Scanner 선언
        Scanner scan = new Scanner(System.in);

        /** X사에 대한 내용 */
        int A = scan.nextInt(); // X사의 1리터당 요금 A
        /** Y사에 대한 내용 */
        int B = scan.nextInt(); // Y사의 기본요금 B
        int C = scan.nextInt(); // Y사의 요금이 기본요금이 되는 사용량의 상한 C
        int D = scan.nextInt(); // Y사의 1리터 당 추가요금 D

        /** 요금의 근간이 되는 사용량 */
        int P = scan.nextInt(); // JOI군의 집에서 사용하는 한 달간 수도의 양 P

        // [Y사의 금액 계산]
        //  1. 상한을 넘어선 값(사용량 - 상한) 만큼 반복문을 실행합니다.
        //  2. P - C가 0보다 작다면 조건절에 0이 들어가 반복문이 실행되지 않게 Math클래스의 max함수를 사용합니다.
        //  3. 반복 시 Y사의 추가요금을 기본요금에 누적합니다.
        for (int i = 0; i < (Math.max(P - C, 0)) ; i++) {
            B += D;
        }

        // [X사의 금액] = (1리터당 요금 * 사용량) = (A * P)
        // X와 Y사의 요금 중 저렴한 요금을 출력합니다.
        System.out.println(Math.min((A * P), B));
    }
}
profile
피아노 치는 개발자

0개의 댓글