.toString(2)
.padStart(n, 0)
10진법 숫자를 이진법으로 바꿔준 배열을 만들고,
i문에서 element 빈 배열 생성,
j문에서 두 이진법 배열의 '#' 여부를 판단해서 element 배열을 구성해주고,
j문이 끝나자마자 answer에 element를 join해서 반영해주었다.
이후 다음 i 문을 돌면 let 변수 키워드에 의해 element 배열이 다시 초기화되면서 반복
function solution(n, arr1, arr2) {
let answer = [];
let binary1 = arr1.map((num) => num.toString(2).padStart(n, 0));
let binary2 = arr2.map((num) => num.toString(2).padStart(n, 0));
for (let i = 0; i < n; i++) {
let element = [];
for (let j = 0; j < n; j++) {
if (binary1[i][j] === '1' || binary2[i][j] === '1') element.push('#');
else element.push(' ');
}
answer.push(element.join(''));
}
return answer;
}
j문 안의 binary 배열 요소가 '1'인지 확인하는 부분을 정규식(replace)을 이용해서 간단하게 해결할 수 있었다.
또 arr1 또는 arr2 두 가지의 경우에 동일한 로직을 돌릴 경우 '|' 연산자를 사용하면 for-i문, for-j문을 돌릴 필요가 없었다.
function solution(n, arr1, arr2) {
let answer = [];
for (let i = 0; i < n; i++) {
answer.push(
(arr1[i] | arr2[i])
.toString(2)
.padStart(n, 0)
.replace(/1/g, '#')
.replace(/0/g, ' ')
);
}
return answer;
}