본문 바로가기
백준/C

백준 15829번 : Hashing [C]

by 대니스 2022. 8. 3.

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

 

15829번: Hashing

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

www.acmicpc.net

 

소스 코드 :

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define M 1234567891

int main()
{
	int len, i;
	long long hash = 0, R = 1;
	char str[51];

	scanf("%d %s", &len, str);

	for (i = 0; i < len; i++)
	{
		hash = (hash + (str[i] - 'a' + 1) * R) % M;
		R = (R * 31) % M;
	}
	printf("%d\n", hash);

	return 0;
}

마무리 : 이 문제를 처음 풀 때 계속 50점으로 나와 어떻게 풀어야할지 잘 몰랐다. 50점이 나온 이유는 숫자의 범위가 너무 커져서 100점을 받지 못하게 된 것이다. 그래서 for문 안에 있는 식을 이용해서 범위를 줄이는 대신에 답에 영향을 끼치지 않게 만든 것이다. 

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

백준 2164번 : 카드2 [C]  (0) 2022.08.11
백준 1259번 : 팰린드롬수 [C]  (0) 2022.08.04
백준 10250번 : ACM 호텔 [C]  (0) 2022.08.03
백준 2798번 : 블랙잭 [C]  (0) 2022.08.03
백준 2292번 : 벌집 [C]  (0) 2022.08.02