[백준] 15829 Hashing
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);
}
}