본문 바로가기
PS/BOJ

[자바] 백준 24309 - РАВЕНСТВО (java)

by Nahwasa 2022. 10. 8.

 문제 : 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();
    }
}

댓글