728x90
입력값을 통해 사칙연산을 출력하는 문제. 범위가 10^1000 이기때문에 int 가 아닌 BigInteger를 활용하여 풀어준다.
워밍업 Scanner로 해보기
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger A = sc.nextBigInteger();
BigInteger B = sc.nextBigInteger();
System.out.println(A.add(B));
System.out.println(A.subtract(B));
System.out.println(A.multiply(B));
}
}
Int로 설정하던것을 BigInteger로 선언해주면 되는거라 크게 어렵지 않다. 다만, Int와 다르게 System.out.println(A+B)처럼 A-B나 A*B가 BigInteger에서는 안되기때문에 함수로 계산을 해줘야한다.
두 수의 합은 add() / 두 수의 뺄셈은 subtract() / 두 수의 곱셈은 multiply()를 통해 해결 해줄 수 있다.
워밍업 끝!
알고리즘 입출력의 대마왕 Buffer로 다시 해보기!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BigInteger A = new BigInteger(br.readLine());
BigInteger B = new BigInteger(br.readLine());
System.out.println(A.add(B));
System.out.println(A.subtract(B));
System.out.println(A.multiply(B));
}
}
Scanner 자리에 BufferedReader로 선언. BigInteger를 활용하여 덧셈, 뺄셈, 곱셈 함수로 입출력 값을 계산해준다.
Buffer로 해결도 끝! 이제 Scanner와 Buffer의 차이를 실감해보자
Scanner를 이용했을때
메모리 : 17996KB / 시간 : 228ms
Buffer를 이용했을때
메모리 : 14568KB / 시간: 136ms
Wow!
728x90
'Algorithm' 카테고리의 다른 글
[Java] 백준 1008번 : A/B (0) | 2021.10.28 |
---|---|
[백준] 1001번 : A-B (0) | 2021.10.28 |
[Java] 백준 1550번 16진수 (0) | 2021.10.27 |
[Java] 백준 1271번 엄청난 부자2 (0) | 2021.10.25 |
[Java] 백준 1330번 두 수 비교하기 (0) | 2021.10.22 |