문제
자연수 A, B와 N이 주어질 때, A/B의 소수점 아래 N번째 자리 숫자를 구하라.
입력
첫째 줄에 A, B, N이 주어진다.
출력
A/B의 소수점 아래 N번째 자리 숫자를 출력한다.
예제
| 입력 | 출력 |
|---|---|
1 3 1 | 3 |
풀이
나눗셈의 나머지를 반복적으로 갱신하여 N번째 자리를 직접 계산한다.
- A % B로 초기 나머지를 구한다
- N번 반복하며 나머지에 10을 곱한 뒤 B로 나눈 몫이 해당 자릿수이다
- 나머지를 갱신하며 반복한다
핵심 아이디어: 손으로 나눗셈하는 과정을 그대로 시뮬레이션하여 O(N) 시간에 해결한다.
코드
const solution = (input) => {
const [A, B, N] = input[0].trim().split(" ").map(Number);
let remainder = A % B;
let result = 0;
for (let i = 0; i < N; i++) {
remainder *= 10;
result = Math.floor(remainder / B);
remainder %= B;
}
return result;
};
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
console.log(solution(input));복잡도
- 시간: O(N)
- 공간: O(1)