본문 바로가기
Development/코딩테스트

[백준] 15829 Node.js

by Yeony99 2022. 9. 27.
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

댓글