자바 백준 21633번
브론즈 4
https://www.acmicpc.net/problem/21633
문제 보기
분류: 구현, 사칙연산
문제 풀기
문제를 보고 double 형식으로 계산을 하고 분류하기 보다는 String 형태로 풀고 싶었다. 게다가 답안 제출의 소숫점 둘째자리까지 표현을 한 것을 보고 더더욱 그랬다. 하지만 예제 입력은 문제없이 통과하였으나 답안 제출을 하고 나니 50% 근처에서 "틀렸습니다"를 맞이하게 되었다. 몇 번에 걸쳐 코드를 다시 봤지만 무엇이 문제인지 보이지 않았다. 아마도 다른 사람의 눈에는 코드의 문제성이 보일듯 한데... 일단, 소숫점 둘째자리 표현도 무시하고 double 로 계산을하여 답을 제출하기로 한다.
주어진 commission 계산식과 그 지정 범위에 대한 조건식으로 각각의 답을 출력한다.
commission 은 최소 100 이고 최대 2000 이기 때문에 계산 결과가 100 보다 작으면 100 을 출력하고 2000 보다 크면 2000 을 출력한다. 그 외의 범위에 대해서는 commission 계산식에 따른 결과를 출력한다.
소숫점 둘째자리에 0 이 들어가도 답을 제출하는데에는 문제가 없으니 무시한다.
코드 보기
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
double commission = (money * 0.01 + 25);
if ((commission) < 100) {
System.out.print(100);
}
else if (2000 < (commission)) {
System.out.print(2000);
}
else {
System.out.print(commission);
}
}
}
초기 String 형태로 풀기위해 제출을 했던 코드
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
String commission = (money / 100 + 25) + "." + (money % 100);
if (Double.parseDouble(commission) < 100) {
System.out.print("100.00");
}
else if (2000 < Double.parseDouble(commission)) {
System.out.print("2000.00");
}
else if ((money % 100 + "").equals("0")) {
System.out.print(commission + "0");
}
else {
System.out.print(commission);
}
}
}
/*
20210
227.10
9000
115.00
300000
2000.00
*/
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 15814 - 야바위 대장 (0) | 2023.04.05 |
---|---|
[Java] 백준 풀기 23348 - 스트릿 코딩 파이터 (0) | 2023.04.04 |
[Java] 백준 풀기 23080 - 스키테일 암호 (0) | 2023.04.02 |
[Java] 백준 풀기 15025 - Judging Moose (0) | 2023.04.01 |
[Java] 백준 풀기 15232 - Rectangles (0) | 2023.03.31 |