카테고리 없음

[프로그래머스] 비밀지도(python)

김홍중 2021. 6. 16. 18:43
def decimal2binary(map_side, decimal):
    digit_num = 0
    binary = []

    while decimal != False :
        binary.insert(0, (decimal % 2))
        decimal = int(decimal / 2)
        digit_num += 1
    while digit_num < map_side:
        binary.insert(0, 0)
        digit_num += 1
    return binary

def decrypt(map_side, binary_map1, binary_map2):
    decrypted_map = []
    temp = ''
    for row in range(map_side):
        for col in range(map_side):
            if binary_map1[row][col] == 0 and binary_map2[row][col] == 0:
                temp += " "
            else:
                temp += "#"
        decrypted_map.append(temp)
        temp = ''

    return decrypted_map
    
def solution(map_side, decimal_map1, decimal_map2):
    binary_map1 = []
    binary_map2 = []
    
    for decimal in decimal_map1:
        binary_map1.append(decimal2binary(map_side, decimal))
        
    for decimal in decimal_map2:
        binary_map2.append(decimal2binary(map_side, decimal))
        
    return decrypt(map_side, binary_map1, binary_map2)

print(solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28]))
print(solution(6, [46, 33, 33 ,22, 31, 50], [27 ,56, 19, 14, 14, 10]))
print(solution(1, [0], [0]))
print(solution(1, [1], [1]))
print(solution(1, [0], [1]))

 

비트연산자를 사용합니다.

def solution(map_side, decimal_map1, decimal_map2):
    or_bit_operated= ''
    decrypted_map = []
    zero_num = 0
    for index in range(map_side):
        or_bit_operated = bin(decimal_map1[index] | decimal_map2[index])[2:]
        zero_num = map_side - len(or_bit_operated)
        or_bit_operated = "0" * zero_num + or_bit_operated
        or_bit_operated = or_bit_operated.replace("1", "#")
        or_bit_operated = or_bit_operated.replace("0", " ")
        decrypted_map.append(or_bit_operated)      
    
    return decrypted_map