티스토리 뷰

반응형
 

15829번: Hashing

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

www.acmicpc.net

// 1.
const fs = require('fs');
const [L, str] = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const arr = Array.from(str);

// 2.
const r = 31n;
const M = 1234567891n;

// 3.
let result = 0n;
let pow = BigInt(1);
for(let i=0;i<L;i++) {
  result += BigInt(arr[i].charCodeAt(0) - 96) * pow;
  pow *= r;
}

// 4.
if(result >= M) result %= M;
console.log(Number(result));
  1. 구조 분해 할당을 통해 필요한 값 L, str를 초기화한다.
  2. Bigint를 사용하기 위해 r과 M을 추가로 초기화한다.
  3. L만큼 for 반복문을 반복하여 arr 배열로부터 값을 구한다.
  4. M보다 큰 경우에만 모듈러 연산을 수행하고, BigInt인 result 값을 Number로 캐스팅하여 출력한다.

결과

8572 KB / 132 ms

메모

  • Bigint에 대해 알아볼 것.
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함