난이도 : D2
문제번호 : 1284
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
삼성전자에 입사한 종민이는 회사 근처로 이사를 하게 되었다. 종민이의 집에서 한 달간 사용하는 수도의 양이 W리터라고 할 때, 요금이 더 저렴한 회사를 골라 그 요금을 출력하는 프로그램을 작성하라. |
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스마다 첫 번째 줄에 위 본문에서 설명한 대로 P, Q, R, S, W(1 ≤ P, Q, R, S, W ≤ 10000, 자연수)가 순서대로 공백 하나로 구분되어 주어진다. |
출력
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고, 종민이가 내야 하는 수도 요금을 출력한다. |
예시
입력 | 출력 |
2 9 100 20 3 10 8 300 100 10 250 |
#1 90 #2 1800 |
2. 문제풀이
하나하나 분리해서 생각해보겠습니다. 1. A사와 B사중 싼걸로 해야한다. 2. A사는 사용량 * L당 요금으로 계산한다. 3. B사는 R리터 이하까지는 Q요금을 R을 넘어간다면 넘어간 만큼 리터당 S요금을 추가한다. 이것을 정리해서 작성하면 아래와 같습니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
#include <algorithm>
using namespace std;
//수도 요금 경쟁
int main() {
int len, p, q, r, s, w, result[2]{0};
cin >> len;
for (int l = 1; l <= len; l++) {
//리터당요금, R리터 이하요금, 제한사용량, 초과분 리터당 요금, 수도 사용량
cin >> p >> q >> r >> s >> w;
//A사는 요금 * 사용량
result[0] = p * w;
//R이하만큼 사용했다면 사용량은 Q
if (w <= r) result[1] = q;
//R초과라면 초과분만큼 추가한다.
else result[1] = s * (w-r) + q;
cout << "#" << l << " ";
//둘중 작은 값을 출력한다.
cout << min(result[0], result[1]) << endl;
}
return 0;
}
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
Sum Python(SW Expert Academy) (0) | 2020.02.22 |
---|---|
최빈수 구하기 Python(SW Expert Academy) (0) | 2020.02.21 |
아름이의 돌 던지기 C++(SW Expert Academy) (0) | 2020.02.17 |
새로운 불면증 치료법 C++(SW Expert Academy) (0) | 2020.02.16 |
가랏! RC카! C++(SW Expert Academy) (0) | 2020.02.15 |
댓글