풀이방법
사용된 것:
수학
2022.07.13
간단한 문제이지만 기억해야 할 것이 한 가지 있어서 적는다.
정답을 구하기 위하여 나눗셈과 곱셈을 한 번씩 해야 하는 문제이다.
이때 주의할 점은
정답을 출력할 때 소숫점 아래를 모두 버린다고 해도, 출력연산 대상인 세 수를 정수 형태로 읽어오면 안 된다는 것이다.
먼저 double 등의 소수 타입으로 받아온 다음, 연산을 모두 마치고, 정답이 도출된 뒤에 그 정답을 정수로 만들어 출력해야 한다.
그러지 않으면 오차가 발생한다.
예를 들어, 1 / 3 * 4 라는 연산을 하는데, 세 수를 모두 정수로 읽어왔다고 치자.
1 / 3 의 값은 0.33333.....이지만, 1과 3 두 수 모두 정수형이라면 프로그램은 소숫점 아래를 버리고 0이라는 정수형의 결과를 취한다.
여기에 4를 곱하면 답은 0이 나온다.
그러나 만약 세 수를 유리수 형태로 읽어왔다면,
1 / 3 의 결과는 0.33333.....그대로 저장된다.
여기에 4를 곱하면 1. 몇이라는 결과가 나온다.
여기서 소숫점 아래를 버리면 답은 1이다. 15726번 문제에서는 이렇게 구한 답이 올바른 답이다.
코드
Java(2022.07.13)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
double answer = a * Math.max(b, c) / Math.min(b, c);
System.out.print((int)Math.floor(answer));
sc.close();
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#12873 : 기념품 (0) | 2022.08.02 |
---|---|
#1935 : 후위 표기식2 (0) | 2022.07.19 |
#8979 : 올림픽 (0) | 2022.07.11 |
#11945 : 뜨거운 붕어빵 (0) | 2022.06.23 |
#1590 : 캠프가는 영식 (0) | 2022.06.19 |