SWEA/D2
[SWEA] 1284. 수도 요금 경쟁
둘기친구
2019. 5. 19. 13:55
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); } } } }