728x90
l = int(input())
str = input()
answer = 0
for i in range(l): #1
answer += (ord(str[i]) - 96) * (31**i) #2
print(answer%1234567891) #3
#1 : 입력받은 문자열 길이만큼 반복
#2 : 각 문자열의 요소를 ord함수를 사용해서 유니코드 정수로 변환하고 - 96을 해서 'a'면 1 'b'면 2.. 등으로 바꾼뒤 소수제곱으로 곱한 시그마해준다.
#3 : M으로 나눈값을 출력한다.
https://hgk5722.tistory.com/149
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 18870 파이썬(python) : 좌표 압축 - (★) (0) | 2022.07.06 |
---|---|
[백준] 18111 파이썬(python) : 마인크래프트 (0) | 2022.07.06 |
[백준] 11651 파이썬(python) : 좌표 정렬하기 2 (0) | 2022.07.05 |
[백준] 2750 파이썬(python) : 수 정렬하기 (0) | 2022.07.05 |
[백준] 10989 파이썬(python) : 수 정렬하기 3 - (★) (0) | 2022.07.05 |