출처: https://www.codetree.ai/missions/4/problems/a-divide-b?&utm_source=clipboard&utm_medium=text
두 자연수 a, b를 입력받아 a / b 결과를 소수점 20째자리까지 출력하는 프로그램을 작성해보세요.
입력 형식
첫 번째 줄에 a, b가 공백을 사이에 두고 주어집니다.
1 ≤ a, b ≤ 100
출력 형식
a / b 결과를 소수점 20째자리까지 출력합니다.
입출력 예제
입력: 3 5
출력: 0.60000000000000000000
Comment: 문제를 처음 보자마자 의식의 흐름대로 푼 거라 redundant한 부분이 많다... 특히, if-else 구문을 사용하지 않아도 됐었다. 조금 더 효율적인 코드를 짜도록 노력해보자.
a, b = map(int, input().split())
if a < b:
print(f"{a//b}.",end="")
for _ in range(20):
print((a*10)//b, end="")
a = (a*10) % b
else:
print(f"{a//b}.",end="")
a %= b
print((a*10)//b, end="")
for _ in range(19):
a = (a*10) % b
print((a*10)//b, end="")
Comment: 앞선 코드에서 말했던 if-else 부분을 없애고, 주석도 달아보았다. 훨씬 깔끔하고 좋은 코드인 것 같다.
a, b = map(int, input().split()) #변수 선언 및 입력
print(f"{a//b}.",end="") #정수 부분 출력
a %= b #a를 b로 나눈 후 나머지를 a에 할당
for _ in range(20): #소수점 20째자리 하나씩 계산
print((a*10)//b, end="") #나머지에 10을 곱한 값을 b로 나눈 몫 출력
a = (a*10) % b #a를 b로 나눈 후 나머지 갱신
주석을 보면 어떻게 풀었는지 나중에 다시봐도 이해가 될 것이다.
매일 하는 습관 들여야징.
인상깊어용~~~ 응원해용!!!