https://www.acmicpc.net/problem/15829
풀이
본문의 글자 수를 보고 지레 겁먹지않으면 됩니다.
본문 내용을 요약하자면 알파벳 [a, b, c, d ..... x, y, z] = [1, 2, 3, 4 .....24, 25, 26] 으로 바꾸어줄 수 있습니다.
소문자로만 이루어진 문자열의 알파벳을 문자단위로 위와 같은 정수로 바꾸어준뒤
문자열의 인덱스 값만큼 31을 제곱해준뒤 곱해줍니다.
이렇게 일련의 과정을 거친 숫자들을 모두 합친 뒤 1234567891로 나눈 나머지를 출력해주면됩니다.
# 15829번 Hashing
n = int(input())
strings = input()
total = 0
# hasing을 하기 위해 사용된 함수 구현.
for i in range(n):
total += ((ord(strings[i]) - 96) * (31 ** i))
print(total%1234567891)
출력결과
'백준 > 구현' 카테고리의 다른 글
[백준] 7568번 덩치 - 파이썬 (0) | 2022.08.16 |
---|---|
[백준] 2231번 분해합 - 파이썬 (0) | 2022.08.16 |
[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 - 파이썬 (0) | 2022.08.16 |
[백준] 11050번 이항 계수 1 - 파이썬 (0) | 2022.07.18 |
[백준] 10866번 덱 - 파이썬 (0) | 2022.07.18 |