난이도 : D2
문제번호 : 1284
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글