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; // 가능 (권장하는 방법)
'개인학습 > 알고리즘' 카테고리의 다른 글
[Java] BOJ 10814: 나이순 정렬, 2차원 배열 (1) | 2025.01.22 |
---|---|
[Java] BOJ 11650: 람다 표현식, 정렬 조건 부여하기 (1) | 2025.01.16 |
[Java] BOJ 2609: 유클리드 호제법, 기약분수 만들기 (1) | 2025.01.15 |
[Java] BOJ 2750: 오름차순 정렬하기, 거품 정렬 (1) | 2025.01.09 |
[Java] BOJ 2839: 반복문에 이름 붙이기, 레이블 (1) | 2025.01.08 |