SWE(5185)이진수

SWE 5185 이진수

  • N자리 16진수가 주어지면 각 자리 수를 4자리 2진수로 표시하는 프로그램 만들기
  • 2진수의 앞자리 0도 반드시 출력해줘야 하기 떄문에, 0이 필요한 개수를 계산해서 더해준다
for rounds in range(int(input())):
    a, b = input().split()
    b = format(int(b, 16), 'b')
    num = int(a)*4 - len(str(b))
    result = '0'*num + b
    print(f"#{rounds+1} {result}")

내장함수를 쓰지 않는다면

  • 각 알파벳에 맞는 숫자를 딕셔너리 형태로 저장
  • input()을 문자열로 받음
  • 16진수를 한자리씩 나눠서, 이를 4번 2로 나누도록 포문 작성해주는 함수 작성
  • 한 자리씩 위에서 작성한 함수를 적용시켜서 결과를 생성
Conversion = {'0':0,'1':1, '2':2, '3':3, '4':4,'5':5,'6':6,'7':7,'8':8, '9':9,
        'A':10,'B':11,'C':12, 'D':13,'E':14,'F':15}

def Binary(num):
    global result
    mok, nam = 0, 0
    for i in range(4):
        mok = num // 2
        nam = num % 2
        result = str(nam) + result
        num = mok
    return

TC = int(input())
for tc in range(1, TC+1):
    N, decimal_num = map(str, input().split())

    final_result = ''
    for i in decimal_num:
        result = ''
        Binary(Conversion[i])
        final_result += result
    print('#%d %s'%(tc, final_result))

참고자료 [SWexperacademy]https://swexpertacademy.com [python_16진수_2진수]https://www.daleseo.com/python-int-bases/ [참고자료_해리의_데브로그]https://tothefullest08.github.io/algorithm/2019/07/21/1_5185_%EC%9D%B4%EC%A7%84%EC%88%98/

0%