Development/코딩테스트

[백준] 15829 Node.js

Yeony99 2022. 9. 27. 12:44
728x90

이렇게 했더니 작은 수의 test case만 만족해서 50점이 나왔다.

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

const obj = {
    a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 11, l: 12, m: 13, n: 14, o: 15, p: 16, q: 17, r: 18, s: 19, t:20, u: 21, v:22, w:23, x:24, y:25, z:26
}

function test(char, rSquare) {
    return obj[char] * rSquare;
}

let result = 0;

for (let i = 0; i < Number(L); i++) {
    result += test(str[i], (31**i))
}

console.log(result)

 

알파벳을 객체로 만들지 않고 하는 방법 + M으로 나눴을 때의 나머지로 구하는 방법으로 큰 수에 대응

 

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

let result = 0;
let r = 1;
for (let i = 0; i < Number(L); i++) {
  result += (str.charCodeAt(i) - 96) * r
  result %= 1234567891;
  r *= 31
  r %= 1234567891;
}

console.log(result)
728x90