본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 14141. 이진수 - Python

by chaemj97 2022. 3. 23.
728x90

https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AX-24sx6WDsDFARi 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

< 📝 문제 >
16진수 1자리는 2진수 4자리로 표시된다.

N자리 16진수가 주어지면 각 자리 수를 4자리 2진수로 표시하는 프로그램을 만드시오.

단, 2진수의 앞자리 0도 반드시 출력한다.

예를 들어 47FE라는 16진수를 2진수로 표시하면 다음과 같다.

0100011111111110


< ❓ 생각 >


< 💻 코드 >

1.

# 테스트 케이스의 수
T = int(input())
for tc in range(1,T+1):
    # N자리 16진수
    N, num16 = input().split()
    print(f'#{tc}',end=' ')
    for i in range(int(N)):
        # 16진수 -> 10진수
        num10 = int(num16[i],16)
        # 10진수 -> 2진수
        # 4자리 채우기
        print(format(num10,'b').zfill(4),end='')
    print()

2.

T = int(input())
for tc in range(1, 1 + T):
    N, data = input().split()
    result = ''
    for i in range(int(N)):
    	# 16진수 -> 10진수
        if data[i] in '0123456789':
            num = int(data[i])
        else:
            num = ord(data[i]) - ord('A') + 10
		
        # 10진수 -> 2진수
        for j in range(3, -1, -1):
            result += "1" if num & (1 << j) else "0"

    print(f'#{tc} {result}')


< ❗ >

int(16진수, 16) : 16진수 - > 10진수

format(,) : 2번째 인자 'b' : 2진수, 'o' : 8진수, 'x' : 16진수

.zfill(n) : 지정 된 자리 수(n)보다 짧을 경우 앞에 0으로 채우기

728x90
반응형

댓글