

문제를 살펴보면 자료구조 시간에 배우는 해시 함수를 구현하는 문제이다
해당 문제의 경우 a부터 z까지만 입력받아 이를 제곱연산 이후 나머지 연산을 통해 값을 출력하는 문제이다
문자열을 입력받을 때, list로 입력받으면서 strip()을 통해 한글자씩 리스트에 저장되도록 작성하였다
이후 for문을 사용하여 문제에서 제시한 연산을 수행하면 되는데, enumerate를 사용하여 거듭제곱할 숫자와 리스트의 값(문자열)
을 사용할 수 있게 작성하였다 문자열은 ord()를 통해 제곱할 수를 연산해주면 된다
a는 아스키코드 값으로 97(10진수)인데, 문제에서 a는 1로 처리하기 때문에 -96을 해주면 된다
import sys
input = sys.stdin.readline
Len = int(input())
Eng = list(input().strip())
#print(Eng)
hash = 0
for idx, s in enumerate(Eng):
num = ord(s) - 96
hash += num * (31 ** idx)
print(hash % 1234567891)


'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 1568 새(브론즈 2) - Python (0) | 2025.04.23 |
|---|---|
| [Baekjoon]백준 2776 암기왕(실버 4) - Python (0) | 2025.04.21 |
| [Baekjoon]백준 30802 웰컴 키트(브론즈 3) - Python (0) | 2025.04.17 |
| [Baekjoon]백준 7568 덩치(실버 5) - Python (0) | 2025.04.15 |
| [Baekjoon]백준 9375 패션왕 신해빈(실버 3) - Python (0) | 2025.04.13 |