치춘짱베리굿나이스

[백준] 1312 본문

소수

문제

피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다.

입력

첫 번째 줄에 A와 B(1≤A, B≤100,000), N(1≤N≤1,000,000)이 공백을 경계로 주어진다.

출력

A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.

풀이

const float = () => {
  let [a, b, n] = require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .trim()
    .split(" ")
    .map(Number);
  a %= b;
  for (let i = 0; i + 1 < n; i++) a = (a * 10) % b;
  console.log(parseInt((a * 10) / b));
};

float();

반성회

테스트케이스에 소수점 백만자리까지 요구하므로 parseInt(a / b * (10 ^ n)) % 10 으로 풀 수 없다

  1. 소수점 자리수를 구할 때 나누어떨어지는 부분 (몫) 은 필요 없으므로 처음에 ab로 나눈 나머지를 a에 저장한다
  2. 소수점 N - 1자리까지는 a에 10을 곱하고 b로 나눈 나머지를 a에 저장한다 ⇒ 어차피 필요 없으므로 몫은 버리고 나머지만 취한다
  3. N번째 자리를 구하기 위해 직전까지 구해왔던 나머지 a에 10을 곱한 후 b로 나눈 몫만 출력한다

'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글

[백준] 3046  (0) 2022.05.08
[백준] 14888  (0) 2022.05.08
[백준] 1759  (0) 2022.05.08
[백준] 5337  (0) 2022.05.08
[백준] 6603  (0) 2022.05.08
Comments