10진수를 2진수로 변환한다.
부족한 자리는 0으로 채우는 n자리 문자열로 변경한다.
한 행씩 돌면서, arr1
arr2
모두 1을 갖는 경우에만 '#'을 채워 반환한다.
def solution(n, arr1, arr2):
answer = []
for i in range(n):
map1 = bin(arr1[i])[2:].zfill(n)
map2 = bin(arr2[i])[2:].zfill(n)
row = ''
for j in range(n):
if map1[j] == '1' or map2[j] == '1':
row += '#'
else:
row += ' '
answer.append(row)
return answer
def solution(n, arr1, arr2):
answer = []
for i in range(n):
result = bin(arr1[i] | arr2[i])[2:].rjust(n,'0').replace('1','#').replace('0',' ')
answer.append(result)
return answer
10진수에 bit 연산 수행 후, 2진수로 변환
부족한 자리를 0으로 채우는 n자리 문자열로 변경
1을 '#'으로, 0을 ' ' 으로 replace.
str.zfill(n)
함수를 사용할 수 있다.str.rjust(n, other)
함수를 사용할 수 있다."123".rjust(5, 'a') => "aa123"
//
와 %
를 한번에 구할 수 있는 divmod()
bin(num) # 2진수
oct(num) # 8진수
hex(num) # 16진수
# 각각 앞에 0b, 0o, 0x 가 붙기 때문에 resut[2:] 진법 표시를 지우고 사용하자
int(string, base)
def dec_to(n, base):
result = ''
while n > 0:
n, mod = divmod(n, base)
result += str(mod)
return result[::-1]
10진수로 바꾸고(int(string, base)
)
10진수를 n진수로 바꾼다(dec_to(n, base)
)