-
[백준] 15829번: Hashing - 코틀린(kotlin)알고리즘/백준 2022. 11. 5. 00:01
https://www.acmicpc.net/problem/15829
문제 해석
a~z를 1~26으로 생각하면 됩니다.
이후에 각자 순서대로 31^index를 곱하여 모두 더해줍니다.
예제 1
abcde의 해시 값은 (1 × 31^0) + (2 × 31^1) + (3 × 31^2) + (4 × 31^3) +( 5 × 31^4)
= 1 + 62 + 2883 + 119164 + 4617605 = 4739715이다.
예제 2
zzz의 해시 값은 (26 × 31^0) + (26 × 31^1) + (26 × 31^2)
= 26 + 806 + 24986 = 25818이다.
나머지 연산 방법
>> (a + b) mod n = {(a mod n) + (b mod n)} mod n
>> (a - b) mod n = {(a mod n) - (b mod n)} mod n
>> (a * b) mod n = {(a mod n) * (b mod n)} mod n
코드
const val m = 1234567891 fun main() { val n = readLine()!!.toInt() val s = readLine()!! var res = 0L var pow = 1L repeat(n){ res += (s[it] - 'a' + 1) * pow % m pow = pow * 31 % m } print(res % m) }
출처
https://ehddud100677.tistory.com/76
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 7568번: 덩치 - 코틀린(kotlin) (1) 2022.11.08 [백준] 10773번: 제로 - 코틀린(kotlin) (0) 2022.11.07 [백준] 1085번 : 직사각형에서 탈출 - 코틀린(kotlin) (0) 2022.11.04 [백준] 1157번 : 단어 공부 - 코틀린(kotlin) (0) 2022.11.03 [백준] 1546번 : 평균 - 코틀린(kotlin) (0) 2022.11.02