난이도 : D2
문제번호 : 5186
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
0보다 크고 1미만인 십진수 N을 이진수로 바꾸려고 한다. 예를 들어 0.625를 이진 수로 바꾸면 0.101이 된다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 0.625 0.1 0.125 |
#1 101 #2 overflow #3 001 |
2. 문제풀이
이번 문제는 십진수로 이루어진 소수를 이진수로 변환하는 문제였다. |
3. 소스코드
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
|
#D2 5186 이진수2
for t in range(int(input())):
#결과 저장 변수
answer = ''
#계산해야 하는 숫자 받기
number = float(input())
#나누기 위한 값
sub_num = 1
#최대 12자리까지 출력
for _ in range(12):
#진행이 될수록 크기는 반절이 된다.
sub_num *= 0.5
#값을 빼보았을때 0보다 크다면 뺀고 결과출력
if number - sub_num >= 0:
answer += '1'
number -= sub_num
#숫자가 나눠떨어졌다면 반복문 종료
if not number:
break
else:
#계산이 안된다면 0추가
answer += '0'
#모든 반복문이 끝났는데 값이 남아있다면 overflow 넣기
if number: answer = 'overflow'
print('#{} {}'.format(t+1, answer))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
단순 2진 암호코드(SW Expert Academy) (0) | 2020.05.17 |
---|---|
최대상금 Python(SW Expert Academy) (2) | 2020.05.16 |
이진수 Python(SW Expert Academy) (0) | 2020.05.14 |
이진탐색 Python(SW Expert Academy) (0) | 2020.05.13 |
이진탐색 Python(SW Expert Academy) (0) | 2020.05.12 |
댓글