카테고리 없음
[프로그래머스] 비밀지도(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