나의 풀이
- 1/0으로 벽과 공백을 처리해야한다.
- 비트 연산자를 활용해서 한 쪽만 벽이 있더라도 벽으로 처리했다.
def solution(n, arr1, arr2):
arr1 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr1]
arr2 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr2]
decode = [[0] * n for _ in range(n)]
for row in range(n):
for col in range(n):
# 어느 한쪽에 벽이 존재하는 경우
if int(arr1[row][col]) | int(arr2[row][col]):
decode[row][col] = "#"
# 양쪽 전부 벽에 없는 경우
else:
decode[row][col] = " "
if col == n - 1:
decode[row] = "".join(decode[row])
return decode
다른 사람 풀이
- [ic]bin[/ic]에 넣기 전부터 비트 연산자 넣고 돌릴 수 있다.
- 행 단위로 [ic]str[/ic] 처리해서 replace로 간단하게 처리했다.
def solution(n, arr1, arr2):
answer = []
for i,j in zip(arr1,arr2):
a12 = str(bin(i|j)[2:])
a12=a12.rjust(n,'0')
a12=a12.replace('1','#')
a12=a12.replace('0',' ')
answer.append(a12)
return answer