알고리즘/백준[baekjoon]

[baekjoon] 백준 15829번 : Hashing (by python 파이썬)

코딩하는이씨 2022. 4. 7. 17:34
728x90
반응형

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

 

15829번: Hashing

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

www.acmicpc.net

 

정답 code

import sys
L = int(sys.stdin.readline())
s = sys.stdin.readline()
sum = 0
for i in range(L):
    sum += ((ord(s[i])-96)*(31**i))
print(sum  % 1234567891)

 

 

solution

 

이번문제에서 막혔던 부분은 문제가 장황한것이였는데 막상 식만 보면 풀 수 있었다.

 

H=∑i=0 l−1 airi modM

 

해당 식을 뜯어보면 0부터 l-1까지 

a를 1로둔상태에서 b는 2 c는 3 ... z 는 26 이런식으로 잡고

r 값인 31의 i제곱을 해준 후

m 값인 1234567891로 나눈 나머지를 구하면 정답이 된다.

 

소문자 a의 아스키 코드값은 97임으로

입력받은 a를 ord()로 아스키 코드 값으로 바꾼후 -96해주면 된다.

 

728x90
반응형