난이도 : D2
문제번호 : 5185
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
16진수 1자리는 2진수 4자리로 표시된다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 4 47FE 5 79E12 8 41DA16CD |
#1 0100011111111110 #2 01111001111000010010 #3 01000001110110100001011011001101 |
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 5185 이진수
hexa_to_decimal = {'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F':15}
for t in range(int(input())):
N, octa = input().split()
answer = ''
#들어온 16진수만큼 반복
for i in octa:
# hexa to decimal 하기
if '0'<= i <= '9':
temp = int(i)
else:
temp = hexa_to_decimal[i]
#16진수는 2진수 4글자이므로 8을 이용함
num = 8
for _ in range(4):
#비트연산해서 값이 나오면 1
if temp & num:
answer += '1'
#값이 안나오면 0
else: answer += '0'
#비트연산하는 값을 반절 줄이기
num >>= 1
print('#{} {}'.format(t+1, answer))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
최대상금 Python(SW Expert Academy) (2) | 2020.05.16 |
---|---|
이진수2 Python(SW Expert Academy) (0) | 2020.05.15 |
이진탐색 Python(SW Expert Academy) (0) | 2020.05.13 |
이진탐색 Python(SW Expert Academy) (0) | 2020.05.12 |
수열 편집 Python(SW Expert Academy) (0) | 2020.04.17 |
댓글