2023. 3. 27. 14:12ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/1312
1312번: 소수
피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다.
www.acmicpc.net
2. 풀이
- 문제에서 소수점 아래 n번째 수를 출력하라고 하였는데 n 은 1 부터 1,000,000까지의 숫자가 주어진다. 일반적인 경우로는 100만번째까지 나타낼 수 없기 때문에 나눗셈을 하는 방식으로 풀어야한다
ex) 입력 a = 25, b = 7, n = 5 일 경우, 출력 : 2
case 1) 1번째 나누기 : 25 % 7 = 4 → 4 * 10 = 40 → 40 / 7 = 5
case 2) 2번째 나누기 : 40 % 7 = 5 → 5 * 10 = 50 → 50 / 7 = 7
case 3) 3번째 나누기 : 50 % 7 = 1 → 1 * 10 = 10 → 10 / 7 = 1
case 4) 4번째 나누기 : 10 % 7 = 3 → 3 * 10 = 30 → 30 / 7 = 4
case 5) 5번째 나누기 : 30 % 7 = 2 → 2 * 10 = 20 → 20 / 7 = 2
let [a,b,n] = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ').map(Number);
let result = 0;
for(let i = 1; i <= n; i++){
a = (a % b) * 10;
result = Math.floor(a / b);
}
console.log(result)
node.js 의 경우, 일반 나누기 ( a / b ) 를 하게 되면 소수점 아래자리까지 표현하기 때문에 Math.floor를 이용하여 소수점 아래를 버린 후 계산을 진행하였다.
3. 정리
- 처음 접근은 입력 값을 나눈 후, 배열을 이용하여 접근하였지만 node.js가 표현할 수 있는 최대 자리수의 한계가 있다는 것을 검색을 통하여 알게 되었다.
'코딩연습' 카테고리의 다른 글
[백준 알고리즘] Node.js 1340. 연도 진행바 (0) | 2023.03.29 |
---|---|
[백준 알고리즘] Node.js 1331. 나이트 투어 (0) | 2023.03.28 |
[백준 알고리즘] Node.js 1308. D-Day (0) | 2023.03.23 |
[백준 알고리즘] Node.js 1834. 나머지와 몫이 같은 수 (0) | 2023.03.21 |
[백준 알고리즘] Node.js 1813. 논리학 교수 (0) | 2023.03.20 |