https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV189xUaI8UCFAZN
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
이 문제는 Code Attack 문제이다. 다른 사람이 내 코드를 보고 input값을 넣어서 오류를 일으키면 공격에 성공한다.
그 말은 내 코드에 잘못된 부분이 있다는 뜻이므로 아직까지는 정확한 정답이 아닐 수도 있다...
풀이
- 먼저 입력을 모두 받고 A사를 선택한 경우와 B사를 선택한 경우의 수도요금을 각각 계산해준다.
- A사는 간단히 리터당 요금 P와 사용한 양 W를 곱해준 값이다.
- B사는 내가 사용한 양 W가 R보다 작거나 같을 경우에는 기본 요금기본요금 Q이고, 그렇지 않을 경우에는 기본요금 Q + 추가로 사용한 양(W-R) * 추가 요금 S이다.
- A사와 B사의 계산한 요금 중 더 작은 값을 출력한다.
import java.io.*;
import java.util.StringTokenizer;
public class Solution {
static int P,Q,R,S,W;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int tc=1; tc<=T; tc++) {
StringTokenizer st = new StringTokenizer(br.readLine());
P = Integer.parseInt(st.nextToken());
Q = Integer.parseInt(st.nextToken());
R = Integer.parseInt(st.nextToken());
S = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
int chargeA = W*P; //A사의 수도요금
int chargeB;
//B사의 수도요금 계산
if(W <= R) {
chargeB = Q; // 기본요금
} else {
int extra = W-R;
chargeB = Q + extra*S;
}
if(chargeA > chargeB) {
System.out.println("#"+tc+" "+chargeB);
} else {
System.out.println("#"+tc+" "+chargeA);
}
}
}
}
'SWEA > D2' 카테고리의 다른 글
| [SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2019.05.19 |
|---|---|
| [SWEA] 1288. 새로운 불면증 치료법 (0) | 2019.05.16 |
| [SWEA] 1928. Base64 Decoder (0) | 2019.05.16 |
| [SWEA] 1859. 백만 장자 프로젝트 (1) | 2019.05.16 |
| [SWEA] 1940. 가랏! RC카! (0) | 2019.05.14 |