십진수를 이진수로 만드는 num.toString(2)
를 이용해서 이진수로 만든 다음 지도 길이에 맞게 0을 추가해주는 코드를 짰었다.
n(지도의 크기) = 5
일 때, num = 1
이면 1.toString(2) = 1
로 바껴서 지도 크기에 맞게 앞 부분에 0을 4개를 추가해준다. 근데 00001
이 되어야 하는데 자꾸 0001
로 앞 부분에 0이 3개 밖에 추가가 안됐다. 다른 숫자들은 잘 추가됐음.
그래서 그냥 직접 지도 크기만큼 10진수를 2진수로 만드는 함수를 만들었다.
function solution(n, arr1, arr2) {
let answer = [];
let tmp1 = [];
let tmp2 = [];
function makeTwo(num) {
let arr = [];
for (let i = 0; i < n; i++) {
arr.unshift(num % 2);
num = parseInt(num / 2);
}
return arr;
}
arr1.map(item => {
tmp1.push(makeTwo(item));
});
arr2.map(item => {
tmp2.push(makeTwo(item));
});
for (let i = 0; i < n; i++) {
answer.push('');
for (let k = 0; k < n; k++) {
if ((tmp1[i][k] === 0) && (tmp2[i][k] === 0)) {
answer[i] += ' ';
}
else {
answer[i] += '#';
}
}
}
return answer;
}