728x90
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
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 1952. 수영장 - Python (0) | 2022.03.25 |
---|---|
[SWEA] 14141. 이진수 - Python (0) | 2022.03.23 |
[SWEA] 1240. 단순 2진 암호코드 - Python (0) | 2022.03.21 |
[Python] 2819. 격자판의 숫자 이어 붙이기 - Python (0) | 2022.03.16 |
[SWEA] 6190. 정곤이의 단조 증가하는 수 - Python (0) | 2022.03.13 |
댓글