const solution = (n, arr1, arr2) => {
// 암호화된 숫자를 해독해야 한다.
// 하나라도 '#'(1)벽이면 그 자리는 1이다.
// 둘다 ' '공백(0)이면 그 자리는 0이다.
let newArr1 = arr1.map((x) => {
let newX = x.toString(2);
if(newX.length < n) {
newX = '0'.repeat(n-newX.length) + newX;
}
return newX;
});
let newArr2 = arr2.map((x) => {
let newX = x.toString(2);
if(newX.length < n) {
newX = '0'.repeat(n-newX.length) + newX;
}
return newX;
});
return newArr1.map((x, i) => {
let newX = '';
for(let indexOfStr = 0; indexOfStr < n; indexOfStr++) {
Number(x[indexOfStr]) || Number(newArr2[i][indexOfStr]) ? newX += '#' : newX += ' ';
}
return newX;
})
}
arr1 각각의 요소를 2진수로 바꾼 배열 newArr1을 만든다.
단, newArr1의 모든 요소는 n의 자리인 2진수여야 한다. 바꾼 2진수의 길이가 n개보다 작다면 부족한만큼 앞에 0을 붙인다.
마찬가지로 arr2에서도 위와 동일한 방법으로 newArr2를 만든다.
newArr1와 newArr2의 요소를 순회하면서 해당 요소를 또 다시한번 순회해서 이루고 있는 0,1 이 두가지로 구성된 요소 안 요소를 뜯어본다.
만약
0 || 0 -> 0
1 || 0 -> 1
0 || 1 -> 1
1 || 1 -> 1
위의 상황중 어떤 상황인지 확인하고 1이라면 '#', 0이라면 공백(' ')으로 요소 안 요소를 하나씩 바꿔나간다.
가장 바깥 순회까지 모두 마친 뒤, 새로 만들어진 배열을 반환한다.