[백준/파이썬] 15829번 : Hashing 풀이

Cornflower blue·2022년 1월 31일
0

백준 풀이

목록 보기
3/15

문제

문제풀이

n = int(input()) #제시할 문자열의 길이를 입력받는다.
str_ = list(input()) #문자열을 입력받아 리스트에 대입한다.
res = 0 # 출력할 변수 res를 선언한다.

for i in range(n): # 문자열의 길이만큼 반복한다.
    res += ((ord(str_[i]) - 96) * (31 ** i))
# 리스트 내 각각의 요소들은 아스키코드값으로 변경 후 96을 빼면 
# a는 1, b는 2의 값을 지니게 된다.
# 계수가 31이고 문자열의 순서에 따라 지수가 높아지므로 이를 고려하여 식을 짜면 위와 같다.

print(res % 1234567891)
# 해시 함수의 정의에서 유한한 범위의 출력을 가져야 한다고 했으므로 M을 나누어 출력한다.
profile
무언가를 만들어낸다는 것은 무척이나 즐거운 일입니다.

0개의 댓글