[ 다먹살 ]/- Coding

[백준] 15829 Hashing

엉망으로살기 2021. 11. 13. 17:51
반응형

https://www.acmicpc.net/problem/15829

 

15829번: Hashing

APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정

www.acmicpc.net

이 문제는 구현 자체가 어렵다기보다는 수의 범위를 해결하는 게 포인트였던 것 같다. 단순히 int형 변수를 사용하면 Small 테스트케이스만 풀려서 50점이 나온다. long이나 기타 BigInteger 등 자료형의 표현 범위가 큰 것을 사용해야하기 때문에 나는 long을 사용해서 풀었다.


문제


입출력 예제


코드

import java.util.Scanner;

public class Main
{
     public static void main(String[] args)
     {
         Scanner sc = new Scanner(System.in);
         int l = sc.nextInt();
         String input = sc.next();

         final long n = 31;
         final long mod = 1234567891;
         long pow = 1;
         long answer = 0; 

         for(int i=0; i<l; i++)
         {
              answer += (input.charAt(i) - 'a' + 1) * pow ;
              pow = (pow *= n) % mod;
         }

         System.out.println(answer%mod);
     }
}

 

반응형