Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 엄청난 부자2 (1271번) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 엄청난 부자2 (1271번) (자바/Java)

luke-king 2023. 11. 20. 22:57

 

 

백준 1271번 (브론즈) 문제

브론즈 문제이기도 하고 나름 코딩 공부했다며 쉬울 줄 알았던 문제.

하지만 "런타임 에러" 뜨면서 당황하기 시작했다.

 

문제를 "입력" 부분 을 다시 보자면 10의 1000 (놓친 부분)은 정말 어마무지하게 큰 숫자이다.

int , long 타입을 사용해도 런타임 에러가 나면서 담지 못했던 것이다.

하지만 "BigInteger"를 사용한다면 달라진다.

 

"BigInteger"

BigInteger는 문자열 형태로 이루어져 있어 숫자의 범위가 무한하기에 어떠한 숫자이든지 담을 수 있다.

이렇게 BigInteger를 사용해 문제를 풀수 있었다.

 

<BigInteger 선언>

BigInteger bigNum = new BigInteger("10000")

 

 

BigInteger 를 이용해 A와 B를 선언해줬다면 기본 사칙연산 메서드를 사용할 수 있다.

덧셈(+) A.add(B)
뺄셈(-) A.subtract(B)
곱셈(*) A.multiply(B)
나눗셈(/) A.divide(B)
나머지(%) A.remainder(B)

 

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        BigInteger n = sc.nextBigInteger();
        BigInteger m = sc.nextBigInteger();

        sc.close();

        System.out.println(n.divide(m));
        System.out.println(n.remainder(m));
    }
}

 

이렇게 작성하니 런타임 에러는 나오지 않고 성공으로 바뀌었다!!!

 

ps. 아직 공부가 많이 부족한걸 다시 한번 깨닫고 차근차근 하나씩 열심히 노력하면 개발자의 길에 한걸음 더 가갈수 있다 생각합니다. 코린이 여러분들 열심히 해서 꼭 멋진 개발자가 되어봐요!!

 

*부족한 부분이나 여러분들의 의견이 있다면 달게 받겠습니다!! 다른 의견이 있다면 부담 갖지 마시고 댓글 달아주세요!! :)