반응형
문제링크
https://www.acmicpc.net/problem/15829
풀이방법
- 알파벳을 숫자로 치환하기 위해 charCodeAt을 사용하여 아스키 코드 번호로 변환한다.
- 1~26 숫자를 맞추기 위해 96을 뺀다.
- 요구사항에 맞춰 result를 계산하는데, 문제에서 정의한 유한한 범위의 출력을 유지하기 위해 result와 mathPow를 M으로 나누며 값을 업데이트 한다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
rl.on("line", (line) => {
input.push(line);
});
rl.on("close", () => {
const count = Number(input[0]);
const alphabets = input[1].split("");
const asciiDiff = 96;
const M = 1234567891;
const r = 31;
let result = 0;
let mathPow = 1;
for (let i = 0; i < count; i++) {
const alphabetNumber = alphabets[i].charCodeAt() - asciiDiff;
result = (result + alphabetNumber * mathPow) % M;
mathPow = (mathPow * r) % M;
}
console.log(result);
});
반응형
'개발' 카테고리의 다른 글
[HTTP 완벽 가이드] 15장 엔터티와 인코딩 15.4~15.10 (0) | 2025.01.22 |
---|---|
[99클럽] 알고리즘 TIL: 백준 27160번 할리갈리 - JavaScript (0) | 2025.01.21 |
[99클럽] 알고리즘 TIL: 백준 10798번 세로읽기 - JavaScript (1) | 2025.01.18 |
[React] React 19에 추가된 핵심 기능 (13) | 2025.01.16 |
[HTTP 완벽 가이드] 15장 엔터티와 인코딩 15.1~15.3 (0) | 2025.01.15 |