Problem Solving/백준

[15829] Hashing

충무로술겜마 2021. 7. 5. 16:43

https://www.acmicpc.net/problem/15829

 

15829번: Hashing

APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정

www.acmicpc.net

문제가 친절하게 해쉬가 뭔지 해쉬 콜리젼이 뭔지까지 설명해줘서 유익했던거 같아요.

저는 저 내용 컴퓨터보안 강의에서 배웠었는데 ㅋㅋ

A*B mod M == (A mod M) * (B mod M) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*
import kotlin.math.pow
 
fun main() {
    val sc:Scanner = Scanner(System.`in`)
    val L:Int = sc.nextInt()
    val M:Long = 1234567891
    var R:Long = 1
    var sum:Long = 0
    var str = sc.next()
    var charArray = CharArray(size = L)
    for(i in 0 until L){
        charArray[i] = str[i].toChar()
    }
    for (i in 0 until L){
        sum += (charArray[i].code-96)*R
        sum %= M
        R *= 31
        R %= M
    }
    println(sum)
}
cs