1seul357

[SWEA] 이진수 본문

알고리즘/SWEA

[SWEA] 이진수

1seul 2021. 11. 28. 16:22
def search(n):       # 16진수를 10진수로 바꿔주기
    if n == 'A': 
        return 10
    if n == 'B':
        return 11
    if n == 'C':
        return 12
    if n == 'D':
        return 13
    if n == 'E':
        return 14
    if n == 'F':
        return 15


T = int(input())
for TC in range(T):
    N, num = input().split()
    N = int(N)
    arr = [[0] * 4 for _ in range(N)]    # 2차원배열로 만들어야 함
    k = 0
    for n in num:          # 입력받은 문자 한글자씩 꺼내기
        if n == 'A' or n == 'B' or n == 'C' or n == 'D' or n == 'E' or n == 'F':
            result = search(n)           # 10진수로 바꿔오기 위한 함수 호출
        else:
            result = n     # 바꿀 필요 없는 숫자는 그냥 넣기
        result = int(result)    # 정수로 바꾸기
        for i in range(1 << 4):     # 2진수가 4비트이므로 2의 4승만큼만 반복하면 된다. (16번)
            if i == result:     
                for j in range(4):
                    if i & (1 << j): # (1<<j) j가 0부터 3까지이고, 이진수는 2의 3승, 2승, 1승, 0승 이렇게 나열되어 있음.
                        arr[k][3 - j] = 1  # 2의 3승, 2승, 1승, 0승은 3-j로 해야 인덱스 0, 1, 2, 3으로 저장 가능
        k += 1      # 리스트 행 +1
    print('#{} '.format(TC + 1), end="")
    for i in arr:
        for j in i:
            print(j, end="")
    print()

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 단순이진 암호코드  (0) 2021.11.28
[SWEA] 노드의 합  (0) 2021.11.28
[SWEA] 최장 경로  (0) 2021.11.28
[SWEA] 최소 신장 트리  (0) 2021.11.28
[SWEA] 최소비용  (0) 2021.11.28