문제
피제수(분자) 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번째 수를 출력한다.
코드
import sys
A, B, N = map(int, sys.stdin.readline().strip().split())
N = 10**N
print(int(((A/B)*N)%10))
처음에는 위의 코드로 작성했었습니다. 하지만, int too large to convert to float 라는 오류가 났습니다. 왜냐하면 N을 엄청 큰 수로 작성 했을 때에는 10에 10000제곱을 해야하는데, 그것을 float형인 A/B와 연산하기라는 것이 어렵기 때문이었죠.
그래서 이 문제를 해결하려면 한번에 계산하는 방법이 아니라 for문으로 소수점 한자릿수 한자릿수 알아가야 문제를 해결할 수 있습니다.
import sys
A, B, N = map(int, sys.stdin.readline().strip().split())
for _ in range(N):
A = (A%B) * 10
result = A//B
print(result)
문제의 정답 코드입니다.
후기
이번 문제는 구글링을 통해서 알아냈습니다. 정말 수학 문제 같았네요...
중요한 택배를 잘못 보내서 기분이 안 좋습니다... 왜 행복하려고 하면 불행해지고 다시 밝아지려고 하면 어두워지는 걸까요... 그래서 당장의 행복도 마음껏 즐기지 못하게 되는 것 같습니다. 모든 선택에 책임이 따른다는 게 이렇게 피곤하고 힘든 일인지 몰랐는데... 어른이 되는 과정이겠죠...
'코딩테스트' 카테고리의 다른 글
[Python] 백준 26595번 - '전투의 신' 풀이 (1) | 2023.01.08 |
---|---|
[Python] 백준 1181번 : 단어정렬 풀이 (0) | 2023.01.04 |
[Python, C] 백준 1789 풀이 (0) | 2023.01.02 |
[Python] 백준 2023 풀이 (0) | 2023.01.01 |
[Python] 백준 2751번 풀이 + input() 과 sys.stdin.readline() 차이 (0) | 2022.12.31 |