본문 바로가기
알고리즘/백준

[백준] 15829 Hashing c++

by 오오오니 2022. 4. 13.

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

 

15829번: Hashing

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

www.acmicpc.net

 

보자 마다 쉽다고 생각했는데 50 점 맞았다.

문제는 Hash값을 M으로 나누어주는 것만 생각하고 31의 거듭제곱을 나누어줄 생각을 못했다는 것이다.

#include<iostream>
#include<string>

using namespace std;

int main()
{
	int n;
	string s;
	cin >> n;
	cin >> s;
	int M = 1234567891;
	long long hash=0,j=1;
	for (int i = 0 ; i < n; i++,j*=31)
	{
		hash += ((s[i] - 'a'+1 )* (j%M));
		j %= M;
		hash %= M;
	}
	cout << hash;
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1992 쿼드트리 c++  (0) 2022.05.14
[백준] 11286 절대값 힙  (0) 2022.04.13
[백준] 10815숫자카드 c++  (0) 2022.04.03
[백준]1094막대기 C++  (0) 2022.03.30
[백준] 9461파도반수열 c++  (0) 2022.03.24