본문 바로가기

두두의 알고리즘/문제

[해시] 백준 15829번 'Hashing' (Python)

728x90

<문제 링크>

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

 

15829번: Hashing

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

www.acmicpc.net


<문제 풀이>

  1. 아스키코드를 정수로(ord), 정수를 아스키코드로(chr) 변환하는 함수 사용
  2. 문제에 나와있는 공식대로 코딩

<코드>

'''
5
abcde

3
zzz

1
i
'''

import sys
input_data = sys.stdin.readline().rstrip()
L = int(input_data.split()[0])
S = input_data.split()[1]

hash = dict()

for idx, i in enumerate(range(ord('a'),ord('z')+1)):
    hash[chr(i)] = idx+1

r = 31

sum_ = 0

for idx,i in enumerate(S):
    sum_ += hash[i] * (r**idx)

print(sum_ % 1234567891)

 

<고쳐야 할 점>

  • 문제 꼼꼼히 읽기