SWEA

[SWEA] 5185 : [파이썬 S/W 문제해결 구현] 1일차 - 이진수 (Python/파이썬)

sson-coding 2025. 11. 15. 14:11

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do

문제

16진수 1자리는 2진수 4자리로 표시된다.

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

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

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

0100011111111110

입력

첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50

다음 줄부터 테스트 케이스의 별로 자리 수 N과 N자리 16진수가 주어진다. 1<=N<=100

16진수 A부터 F는 대문자로 표시된다.

출력

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

예제

입력

3
4 47FE
5 79E12
8 41DA16CD

출력

#1 0100011111111110
#2 01111001111000010010
#3 01000001110110100001011011001101	 

정답 및 풀이

import sys
input = sys.stdin.readline

hex_to_bin = {
    '0':'0000', '1':'0001', '2':'0010', '3':'0011',
    '4':'0100', '5':'0101', '6':'0110', '7':'0111',
    '8':'1000', '9':'1001', 'A':'1010', 'B':'1011',
    'C':'1100', 'D':'1101', 'E':'1110', 'F':'1111'
}

t = int(input())

for tc in range(1, t+1):
    n, hex_num = input().split()
    result = ''

    for h in hex_num:
        result += hex_to_bin[h]

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

  1. import sys / input = sys.stdin.readline
    • 입력을 빠르게 받기 위해 sys.stdin.readline을 사용한다.
  2. hex_to_bin = { ... }
    • 16진수 한 글자를 4자리 2진수로 변환하기 위한 매핑 딕셔너리를 만든다.
  3. t = int(input())
    • 테스트 케이스 개수를 입력받는다.
  4. for tc in range(1, t+1):
    • 테스트 케이스 개수만큼 반복하면서 번호(tc)를 1부터 증가시키며 사용한다.
  5. n, hex_num = input().split()
    • 변환할 16진수 길이 n과 실제 16진수 문자열 hex_num을 입력받는다.
  6. result = ''
    • 변환된 2진수를 누적할 문자열을 빈 문자열로 초기화한다.
  7. for h in hex_num:
    • 16진수 문자열의 각 문자를 하나씩 가져온다.
  8. result += hex_to_bin[h]
    • 해당 문자를 2진수 문자열로 바꿔서 result에 이어 붙인다.
  9. print(f"#{tc} {result}")
    • 테스트 케이스 번호와 변환된 2진수 문자열을 출력한다.