_

Always be tactful

프로그래밍/풀었어, 백준

[Java] 백준 15829번: BigInteger

funczun 2025. 1. 13. 01:13
import java.io.*;
import java.math.BigInteger;

public class Problem15829 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int l = Integer.parseInt(br.readLine()); // 문자열 길이
        String w = br.readLine(); // 문자열

        BigInteger r = new BigInteger("31"); // r 고정
        BigInteger sum = BigInteger.ZERO; // sum 초기화

        for (int i = 0; i < l; i++) {
            sum = sum.add(r.pow(i).multiply(BigInteger.valueOf((int) w.charAt(i) - 96)));
        }
        System.out.println(sum.mod(BigInteger.valueOf(1234567891)));
    }
}
  • 1 ≤ L ≤ 50

키 포인트

 

 문자열 길이 L이 50인 경우 숫자가 아득히 커지므로 BigInteger를 사용해야 한다. BigInteger 클래스는 불변 객체이기 때문에 = 연산자를 사용해 초기화할 수 없다. 따라서 BigInteger.ZERO로 초기화한다.

BigInteger bigInt = 0; // 불가능

BigInteger bigInt = new BigInteger("0"); // 가능

BigInteger bigInt = BigInteger.ZERO; // 가능 (권장하는 방법)
728x90