baekjoon(Java)

[BOJ] 백준 1312 소수 (Java)

bak_ssso 2022. 1. 20. 18:12

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

 

1312번: 소수

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

www.acmicpc.net

 

문제

피제수(분자) 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번째 수를 출력한다.

 

성공코드
// 2022.01.20.목
import java.util.Scanner;

public class BOJ1312 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int A = input.nextInt();
        int B = input.nextInt();
        int N = input.nextInt();

        int answer = A % B;

        for (int i = 0; i < N-1; i++) {
            answer = (answer * 10) % B;
        }

        System.out.println((answer * 10) / B);
    }
}

 

Review

처음엔 소수점 아래 숫자들을 String형 변수에 저장하고 charAt을 통해 해당 값을 불러오려고 했었다. 답이 0인 경우까지 생각해서 문제를 풀었고 질문에 올라와있는 반례들도 확인했는데 계속 틀렸다고 해서 애먹었던 문제. 구글링해봤더니 내가 접근한 방법과는 완전 다른 방법을 찾을 수 있었다. 나누어 떨어지지 않는 나눗셈의 과정을 떠올려본다면 쉽게 풀 수 있었던 문제였다.