[백준 15829] Hashing

[백준 15829] Hashing

코드

def solution(l, arr): answer = 0 for i in range(l): arr[i] = ord(arr[i])-96 answer = answer + arr[i] * 31**i print(answer%1234567891) l = int(input()) arr = list(input()) solution(l, arr)

설명

문제가 복잡하지만 간단하게 해석하면 다음과 같다.

문자열 입력은 a부터 z 까지 소문자만 나온다.

a의 아스키코드 값은 97 이므로 간단하게 ord()를 해준 뒤, 96을 빼준다.

그리고 ord()-1 값과 31의 i 제곱 수를 answer에 계속 더해준다.

마지막에 1234567891로 나눈 값을 출력한다.

파이썬이나 자바였으면 정수 값의 범위에 신경을 써줬어야 하겠지만 파이썬이라서 그냥 된다.

from http://not-to-be-reset.tistory.com/563 by ccl(A) rewrite - 2021-12-28 17:01:47