공부하기/백준

[Java] 백준 풀기 21633 - Bank Transfer

XEV 2023. 4. 3. 23:02

자바 백준 21633번

브론즈 4

https://www.acmicpc.net/problem/21633

 

21633번: Bank Transfer

Tanya has an account in "Redgotts" bank. The bank has the commission to transfer money to "Bluegotts" bank that her friend Vanya has the account in. Tanya has read her bank rules and learned the following: The commission for the bank transfer is $25$ tugri

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 사칙연산

 

 

 

 

 

문제 풀기

문제를 보고 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
*/