내가 생각했을때 문제에서 원하는부분
첫 번째 줄에 A와 B(1 ≤ A, B ≤ 100,000), N(1 ≤ N ≤ 1,000,000)이 공백을 경계로 주어진다.
A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.
내가 이 문제를 보고 생각해본 부분
입력 읽기: BufferedReader와 StringTokenizer를 사용하여 세 정수 A, B, N을 입력받는다.
초기 나머지 계산: A를 B로 나눈 나머지를 구하여 저장합니다 (A % B). 이 나머지가 소수점 이하 계산의 시작점이다.
N번 반복 계산: 소수점 아래 N번째 자리를 구하기 위해 N번 반복해준다.
현재 나머지에 10을 곱한다.
10을 곱한 나머지를 B로 나눈 몫이 해당 자릿수의 숫자가 된다.
10을 곱한 나머지를 B로 나눈 나머지가 다음 자릿수 계산에 사용될 새로운 나머지가 된다.
결과 저장: N번 반복이 끝난 후, 마지막으로 계산된 자릿수 숫자가 최종 결과이다.
결과 출력: 최종 결과를 출력한다.
코드로 구현
package baekjoon.baekjoon_28;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 백준 1312번 문제
public class Main1011 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
// A를 B로 나눈 후의 나머지부터 시작합니다.
// 이 나머지에 10을 곱하여 소수점 첫째 자리 계산에 사용합니다.
int result = A % B;
int digit = 0;
// N번째 자릿수를 구하기 위해 N번 반복합니다.
for(int i = 0; i < N; i++) {
result *= 10; // 현재 나머지에 10을 곱하여 다음 자릿수를 계산할 준비를 합니다.
digit = result / B; // B로 나누어 몫을 구합니다. 이 몫이 해당 자릿수의 숫자입니다.
result %= B; // B로 나눈 나머지를 구하여 다음 자릿수 계산을 위해 저장합니다.
}
System.out.println(digit); // N번의 반복 후 마지막으로 계산된 digit가 소수점 아래 N번째 자리 숫자입니다.
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.