문제풀이/BOJ

[Python] BOJ/백준 1312번 소수

서채리 2021. 6. 29. 17:35

[문제]

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

 

1312번: 소수

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

www.acmicpc.net

 


[풀이]

처음에 접근했던 방법에서 런타임 에러가 났다. 찾아보니 나눗셈을 수학적으로 접근해야 에러가 안 난다고 한다.

 

25 / 7을 할 경우 몫이 3이고 나머지가 4이다.

나눗셈은 이전 자릿수에서 구해진 나머지 수에 10을 곱한 후 나오는 몫과 나머지를 반복적으로 구한다.

이를 구하고자 하는 소수점 아래 자릿수인 n-1만큼 반복해서 구한다.

 


[코드]

- 런타임 에러 (IndexError)

if __name__ == '__main__':
    a, b, n = map(int, input().split())
    result = str(a / b)
    print(result[result.index('.') + n])

 

- 제출 코드

if __name__ == '__main__':
    a, b, n = map(int, input().split())

    a %= b
    for i in range(n-1):
        a = (a*10) % b

    print((a*10) // b)