5186. 이진수2
문제)
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’를 출력하는 프로그램을 작성하시오.
[입력]
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50
다음 줄부터 테스트 케이스의 별로 소수점 아래가 12자리 이내인 N이 주어진다.
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# 1번 풀이
T = int(input())
for _ in range(T):
n = float(input())
answer = ""
temp = 0
i = -1
while True:
if temp + 1 * 2**i <= n:
temp += 1 * 2**i
answer += "1"
i -= 1
else:
answer += "0"
i -= 1
if temp == n:
break
if len(answer) > 13:
answer = False
break
if not answer:
print(f"#{_ + 1} overflow")
else:
print(f"#{_ + 1} {answer}")
# 2번 풀이
T = int(input())
for _ in range(T):
n = float(input())
answer = ""
while n:
n = n * 2
if n >= 1:
answer += "1"
n -= 1
elif n < 1:
answer += "0"
if len(answer) > 13:
answer = "overflow"
break
print(f"#{_ + 1} {answer}")
|
cs |
문제 출처 : https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.
학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 4366. 정식이의 은행업무 (0) | 2022.03.25 |
---|---|
[SW Expert Academy] 10726. 이진수 표현 (0) | 2022.03.25 |
[SW Expert Academy] 5185. 이진수 (0) | 2022.03.24 |
[SW Expert Academy] 1240. 단순 2진 암호코드 (0) | 2022.03.23 |
[SW Expert Academy] 2105. 디저트 카페 (0) | 2022.03.22 |