[알고리즘] a/b 출력하기

Sun Ah Min·2023년 9월 9일
1

Algorithm

목록 보기
2/3

출처: 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

풀이1

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="")
        

풀이 2

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로 나눈 후 나머지 갱신 

주석을 보면 어떻게 풀었는지 나중에 다시봐도 이해가 될 것이다.
매일 하는 습관 들여야징.

profile
나는 커서 무려 내가 되겠지

1개의 댓글

comment-user-thumbnail
2023년 11월 24일

인상깊어용~~~ 응원해용!!!

답글 달기