본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 1629/javascript] 곱셈

by tokkiC 2022. 8. 14.

큰 수를 사용해야 하니 BigInt 를 알아야 하고

시간내에 풀어야 하니 재귀를 사용해서 풀어야 한다

두가지를 알아야 풀수있으니 생각보다 정답률이 낮은 문제다...

재귀 공부하려고 풀었다가 자바스크립트의 BigInt 에 머리를 탁 치고 간다;;;

함수 안에 함수를 쓸 수 있는 점은 괜찮다만... 자바스크립트 너... 진짜;

https://www.acmicpc.net/problem/1629

 

1629번: 곱셈

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.

www.acmicpc.net

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input = line.split(" ").map((el) => BigInt(el));
  readline.close();
});
readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (input) => {
  [a, b, c] = input;
  const POW = (a, b, c) => {
    if (b === 1n) {
      return a % c;
    }
    let val = POW(a, BigInt(b / 2n), c);
    val = (val * val) % c;
    if (b % 2n === 0n) {
      return val;
    }
    return (val * a) % c;
  };
  console.log(parseInt(POW(a, b, c)));
};

댓글