풀이1
function solution(n, arr1, arr2) {
let answer = Array.from({length:n}, () => '');
arr1 = arr1.map(v => v.toString(2).padStart(n,'0'))
arr2 = arr2.map(v => v.toString(2).padStart(n,'0'))
for (let i=0; i<n; i++){
for (let j=0; j<n; j++){
if (arr1[i][j] === '0' && arr2[i][j]==='0') answer[i] += ' '
else answer[i] += '#'
}
}
return answer;
}
풀이2
function solution(n, arr1, arr2) {
return arr1.map((v, i) => addZero(n, (v | arr2[i]).toString(2)).replace(/1|0/g, a => +a ? '#' : ' '));
}
const addZero = (n, s) => {
return '0'.repeat(n - s.length) + s;
}
풀이3
// 비트연산자 or 을 이용한 풀이 (a|b) => a와 b를 이진수로 변환했을 때 어느 한쪽이 1이면 1 반환
function solution(n, arr1, arr2) {
return (arr1.map( (v,i) => (v |arr2[i]).toString(2).padStart(n,0).replace(/0/g,' ').replace(/1/g,'#')))
}