문제
삼성전자에 입사한 종민이는 회사 근처로 이사를 하게 되었다.
그런데 집의 위치가 두 수도 회사 A, B 중간에 위치하기에 원하는 수도 회사를 선택할 수 있게 되었는데,
두 회사 중 더 적게 수도 요금을 부담해도 되는 회사를 고르려고 한다.
종민이가 알아본 결과 두 회사의 수도 요금은 한 달 동안 사용한 수도의 양에 따라 다음과 같이 정해진다.
A사 : 1리터당 P원의 돈을 내야 한다.
B사 : 기본 요금이 Q원이고, 월간 사용량이 R리터 이하인 경우 요금은 기본 요금만 청구된다.
하지만 R 리터보다 많은 양을 사용한 경우 초과량에 대해 1리터당 S원의 요금을 더 내야 한다.
종민이의 집에서 한 달간 사용하는 수도의 양이 W리터라고 할 때, 요금이 더 저렴한 회사를 골라 그 요금을 출력하는 프로그램을 작성하라.
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스마다 첫 번째 줄에 위 본문에서 설명한 대로 P, Q, R, S, W(1 ≤ P, Q, R, S, W ≤ 10000, 자연수)가 순서대로 공백 하나로 구분되어 주어진다.
2 9 100 20 3 10 8 300 100 10 250 |
출력
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고, 종민이가 내야 하는 수도 요금을 출력한다.
#1 90 #2 1800 |
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import java.util.Scanner; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int t=sc.nextInt(); for(int i=0; i<t; i++){ int P = sc.nextInt(); //A사 1L당 요금 int Q = sc.nextInt(); //B사 기본 요금 int R = sc.nextInt(); //B사 초과 요금 L 기준 int S = sc.nextInt(); //B사 초과 1L당 비용 int W = sc.nextInt(); //한 달 간 사용하는 수도의 int A = P * W; //A사 지불 비용 int B = Q + Math.max(W-R,0)*S; //B사 지불 비용 System.out.printf("#%d %d\n",i+1, Math.min(A,B)); } } } | cs |
'SW expert Academy > D2' 카테고리의 다른 글
[SW Expert Academy] 2357번 September 9 (0) | 2023.05.17 |
---|---|
[SW Expert Academy] 1204번 최빈수 구하기 (0) | 2023.05.17 |
[SW Expert Academy] 1288번 새로운 불면증 치료법 (0) | 2023.05.17 |
[SW Expert Academy] 1928번 Base64 Decoder 변형 문제 (0) | 2023.05.17 |
[SW Expert Academy] 1928번 Base64 Decoder (0) | 2023.05.12 |