티스토리 뷰
반응형
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));
- 구조 분해 할당을 통해 필요한 값 L, str를 초기화한다.
- Bigint를 사용하기 위해 r과 M을 추가로 초기화한다.
- L만큼 for 반복문을 반복하여 arr 배열로부터 값을 구한다.
- M보다 큰 경우에만 모듈러 연산을 수행하고, BigInt인 result 값을 Number로 캐스팅하여 출력한다.
결과
8572 KB / 132 ms
메모
- Bigint에 대해 알아볼 것.
'Dev. > coding test' 카테고리의 다른 글
[BaekJoon] 1620 나는야 포켓몬 마스터 이다솜 (node.js) (0) | 2021.07.08 |
---|---|
[BaekJoon] 2292 벌집 (node.js) (0) | 2021.07.06 |
[BaekJoon] 2869 달팽이는 올라가고 싶다 (node.js) (0) | 2021.07.05 |
[BaekJoon] 10815 숫자 카드 (node.js) (0) | 2021.06.30 |
[BaekJoon] 11399 ATM (node.js) (0) | 2021.06.30 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mysql
- terraform
- JPA
- jQuery
- shell
- RancherDesktop
- Git
- Java
- hashicorp
- Docker
- pgloader
- Puppeteer
- Gradle
- Node.js
- eureka
- kotlin
- Vault
- Database
- Spring Cloud Config
- 코딩테스트
- AWS
- etc
- spring boot
- AWS IoT
- postgresql
- javascript
- JEST
- IntelliJ
- react
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함