본문 바로가기

Algorithm/Implementation

(Python) - 백준(BOJ) 16829번 : Hashing 답

반응형

 

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

 

15829번: Hashing

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

www.acmicpc.net

큰 수를 다루는 법을 구현하는 문제였습니다.

 

풀이방법 :

 1. ord함수 : 문자의 아스키 코드값을 반환하는 함수입니다. 이를 통해 원하는 알파벳의 숫자수열을 구할 수 있었습니다.

 2. 얻은 숫자수열을 문자열의 길이만큼 loop를 돌려 정해진 해싱함수를 돌려 결과값을 출력합니다.

Code :

def convertStrToInt(strWord):
    tmp = []
    for i in range(strSize):
        tmp.append(ord(strWord[i])-96)
    return tmp

strSize = int(input())
strWord = input()
r = 1
M = 1234567891
h = 0

convertedWord = convertStrToInt(strWord)

for i in range(strSize):
    h += convertedWord[i] * r % M
    h %= M
    r*=31 % M
    
print(h)