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
'Development > 코딩테스트' 카테고리의 다른 글
[백준] 1259 Node.js (0) | 2022.09.28 |
---|---|
[백준] 3052 Node.js (0) | 2022.09.28 |
[백준] 2577 Node.js (1) | 2022.09.26 |
[백준] 1546 Node.js (0) | 2022.09.25 |
[백준] 1152 Node.js (0) | 2022.09.24 |
댓글