개요"백준 - 팩토리얼 0의 개수" 문제를 풀다가 BigInteger의 길이를 계산해야 했습니다. 이 문제에서는 매우 큰 수의 팩토리얼을 계산한 후, 그 수에서 뒤에 붙은 0의 개수를 구하는 문제가 주어집니다. 이때, 팩토리얼의 값은 매우 커질 수 있으므로 int나 long으로는 처리가 불가능하고, BigInteger 클래스를 사용해야 합니다. BigInteger는 매우 큰 숫자를 다룰 수 있는 클래스이지만, 숫자의 길이를 구하는 메서드는 기본적으로 제공되지 않습니다. 따라서 BigInteger의 길이를 계산하려면 몇 가지 방법을 사용해야 합니다. 이번 포스팅에서는 BigInteger 객체의 길이를 구하는 방법을 정리하고자 합니다. 문자열로 변환 후 길이 구하기BigInteger의 길이를 계산하는 가장 ..
BigInteger
개요프로그래밍에서 숫자를 다룰 때 정수형 자료형의 범위를 초과하지 않도록 자료형을 선택하는 것은 매우 중요합니다. Java에서는 기본적으로 int, long, 그리고 BigInteger를 제공하며, 각 자료형의 사용 한계를 이해하면 더 안정적인 프로그램을 작성할 수 있습니다. 코딩테스트를 준비하다 보면 문제의 조건에 따라 자료형이 달라집니다. 이번 포스팅에서는 각 자료형의 범위에 대해 정리하여 더 안정적인 프로그램을 작성할 수 있도록 하고자 합니다. int 자료형int smallNumber = 2_000_000_000; // 가능int tooBigNumber = 3_000_000_000; // 오류: 값이 범위를 초과 범위 최솟값: -2^31 ≈ -2,147,483,648최댓값: 2^31 - 1 ≈ 2,..
문제설명입력 & 출력나의 풀이이번 문제는 문제 1837번 (암호제작)은 소수와 나머지 연산을 활용하여 암호를 제작하는 문제입니다.소수가 작은 경우에는 컴퓨터로 모든 경우의 수를 돌려보아 비밀 키를 쉽게 알 수 있다는 것이다. 문제 설명에서 나와 있듯이 위 문구처럼 "모든 경우의 수를 돌려보면 == 브루트 포스 "입니다. [Algorithm] 완전 탐색, 브루트 포스: 가장 단순한 알고리즘(Brute Force) 알아보기한 사람이 단어를 생각하고 다른 사람이 그 단어를 추측하는 만약 "단어 맞추기" 게임을 한다면 추측하는 사람은 가능한 모든 단어를 시도하여 맞출 때까지 계속합니다. 예를 들어 추측하는 사pixx.tistory.com 따라서 두 소수 p, q 중 하나라도 K보다 작은 암호는 좋지 않은 암..
개요수학적인 계산에서 나머지를 구하는 일이 자주 발생합니다. 예를 들어, 암호화 알고리즘에서는 큰 수의 나머지 계산이 필수적이며, 어떤 수를 다른 수로 나누고 그 나머지를 구하는 연산은 다양한 분야에서 중요합니다. 자바의 BigInteger 클래스는 큰 수를 다루는 데 필요한 여러 연산을 제공합니다. 그 중에서도 mod() 함수에 대해서 정리하고자 합니다. BigInteger 클래스에서 mod() 함수 사용하기BigInteger 클래스의 mod() 함수는 나머지 연산을 수행하는 메서드로, 두 BigInteger 객체 간에 나누기 연산을 수행하고 그 나머지를 반환합니다. mod() 함수는 크게 두 가지 주요 기능을 가지고 있습니다. 1. 큰 수의 나머지 계산BigInteger를 사용하면 매우 큰 수에 대해..