알고리즘 자체는 쉽게 생각했는데 문자열 다루는 거 때문에 골머리를 앓았다😇
처음에는 각 리스트 원소를 이진수로 변환하고 OR 연산을 하자고 생각했는데 이거 필요없음. 그냥 바로 OR 연산 들어가면 된다.
def solution(n, arr1, arr2):
orarr = [i | j for i, j in zip(arr1, arr2)] #OR 연산
#이진수 형태의 배열
binarr = []
for element in orarr:
binarr.append(format(element, 'b').zfill(n)) #zfill을 활용해 자리수 통일하기
#출력형태에 맞게 변환
ans = []
for b in binarr:
tmp = ''
for i in range(n):
if(b[i]=='1'): tmp+='#'
else: tmp+=' '
ans.append(tmp)
return ans
zip(a1, a2)
: a1 배열과 a2 배열의 각 원소 페어링bin(n)
나 format(n, 'b')
을 활용하면 된다.bin(n)
은 접두사 '0b'
가 붙는다는 차이가 있다..! 이거 때문에 상당히 시간 많이 잡아먹음 자리수 맞추는 문제 때문에..^^ 이 문제에선 format을 사용하는 게 정신건강에 이롭다.zfill(n)
(n은 길이)