또 뭐하지

백준 15829번 Hashing 본문

I.sly()/10기 심화 - 프로그래밍

백준 15829번 Hashing

mameul 2024. 10. 30. 21:37
728x90

 

Hashing은 문제에서 정의한 hash 함수 공식을 구현하는 문제이다. 공식은 아래와 같다.

여기서 r = 31,  M = 1234567891로 주어져있다.

입력은 첫번째 줄에서 문자열의 길이가 입력되고, 두번째 줄에서 문자열이 입력된다. 주어진 문자열은 소문자로만 구성되어 있다.출력은 해당 해시 함수를 적용한 정수 결과값을 출력하면 된다. 

# 문제에서 주어진 r과 M 정의
r = 31
M = 1234567891

length = int(input())
str = input()

sum = 0
for i in range(length):
    k = (ord(str[i])-96) * (r**i) # 문자를 숫자로 변환하여 자릿수에 맞는 r의 거듭제곱을 곱해줌
    sum += k # 연산한 값을 모두 더함
hash = sum%M # 총합을 모듈러 연산을 해 hash 값을 얻음

print(hash)

'I.sly() > 10기 심화 - 프로그래밍' 카테고리의 다른 글

백준 2869번 달팽이는 올라가고 싶다  (0) 2024.11.08
백준 1259번 팰린드롬수  (0) 2024.10.30
백준 2798번 블랙잭  (0) 2024.10.08
백준 2292번 벌집  (1) 2024.10.08
백준 2231번 분해합  (0) 2024.10.02