[백준] 15829번 Hashing

BoongDev·2021년 12월 27일
0

알고리즘

목록 보기
3/4

문제

public static main(String[] args) throw IOException {

	BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
    
    int l = Integer.parseInt(br.readLine());
	String s = br.readLine();

        long result = 0;
        long temp = 1;
        for (int i = 0; i < l; i++) {
            result += ((s.charAt(i) - 'a' + 1) * temp);
            temp = (temp * 31) % 1234567891;
        }

        System.out.println(result % 1234567891);
}

주의

제곱이 들어가는 점이 가장 큰 주의점이다
여기서 r로 지정된 31의 50제곱은 long 타입의 범위를 넘어간다.

중간 연산에서 계속해서 M 을 나누어 주는 연산을 돌려야 범위 안에서 계산이 된다.

profile
욕심 많은 주니어 개발자입니다.

0개의 댓글