본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 14142. 이진수2 - Python

by chaemj97 2022. 3. 22.
728x90

https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AX-24-D6WFYDFARi 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

< 📝 문제 >
0보다 크고 1미만인 십진수 N을 이진수로 바꾸려고 한다. 예를 들어 0.625를 이진 수로 바꾸면 0.101이 된다.

N = 0.625
0.101 (이진수)
= 1*2^-1 + 0*2^-2 + 1*2^-3
= 0.5 + 0 + 0.125
= 0.625

N을 소수점 아래 12자리 이내인 이진수로 표시할 수 있으면 0.을 제외한 나머지 숫자를 출력하고, 13자리 이상이 필요한

 

경우에는 ‘overflow’를 출력하는 프로그램을 작성하시오.

 

< ❓ 생각 >

10진수를 2진수로 바꿀 때 2로 나누는 것 처럼 계산!!

지수가 점점 작아지도록 설정!

나머지를 다음 수로 변경!


< 💻 코드 >

T = int(input()) # 테스트 케이스의 수
for tc in range(1,T+1):
    N = float(input())
    a = 1 # 지수
    result = ''
    while N >0:
        result += str(int(N//2**-a))
        N %=2**(-a)
        a += 1
    if len(result) > 13:
        result = 'overflow'
    print(f'#{tc} {result}')

 

 

728x90
반응형

댓글