문제 : boj24309
필요 알고리즘 개념
- 큰 수 표현, 사칙연산
- 간단한 사칙연산인데 문제는 엄청나게 큰 수로 표현 가능해야한다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
결론적으로는 a,b,c를 입력받은 후 b-c를 a로 나눈 값을 출력해주면 된다(구글번역기 돌리면 bc/a 가 답인 것으로 판단되는데, 실제론 (b-c)/a가 원하는 답이다.). 문제는 c,b가 10^100이라는 어마무시한 수까지 가능하고, a도 10^17까지 가능하다. 즉, 알고리즘 문제라기 보다는 큰 수를 어떻게 표현할지 각 언어마다 사용법을 알면 된다. 자바의 경우엔 BigInteger를 사용해주면 된다. 뺄셈은 subtract(), 나눗셈은 divide()이다. 코드를 참고해보자.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BigInteger a = new BigInteger(br.readLine());
BigInteger b = new BigInteger(br.readLine());
BigInteger c = new BigInteger(br.readLine());
b = b.subtract(c);
b = b.divide(a);
System.out.println(b);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 20353 - Atrium (java) (0) | 2022.10.10 |
---|---|
[자바] 백준 1402 - 아무래도이문제는A번난이도인것같다 (java) (0) | 2022.10.09 |
[자바] 백준 25601 - 자바의 형변환 (java) (0) | 2022.10.07 |
[자바] 백준 3043 - 장난감 탱크 (java) (0) | 2022.10.06 |
[자바] 백준 25379 - 피하자 (java) (6) | 2022.10.05 |
댓글