function solution(n, arr1, arr2) {
var answer = [];
let b_arr1 = toBinary(arr1, n);
let b_arr2 = toBinary(arr2, n);
for (let i = 0; i < n; i++) {
let line = ""
for (let j = 0; j < n; j++) {
if (b_arr1[i][j] === '0' && b_arr2[i][j] === '0') {
line += " "
} else {
line += "#"
}
}
answer.push(line)
}
return answer;
}
function toBinary(arr, n) {
let b_arr = []
for (let i = 0; i < arr.length; i++) {
if (arr[i].toString(2).length < n) {
let plus_z = n - arr[i].toString(2).length;
let p_z = ""
for (let j = 0; j < plus_z; j++) {
p_z += "0"
}
b_arr[i] = p_z + arr[i].toString(2);
} else {
b_arr[i] = arr[i].toString(2)
}
}
return b_arr;
}
매우 길다.
다름사람 풀이를 보니 역시 1~2줄에 끝내신 분이 계시고
보기좋게 모듈형식으로 만든 사람들이 있다.
나는 우선 보기좋은 모듈형식으로 만드는게 좋다고 생각하기 때문에 한번 쓱 보고 다시 내 코드를 수정하는 시간을 가져볼까 한다.
const solution = (n, arr1, arr2) => {
const binaryStringArray1 = decimalToBinary(arr1, n);
const binaryStringArray2 = decimalToBinary(arr2, n);
const map1 = binaryStringArray1.map(splitToNumbers)
const map2 = binaryStringArray2.map(splitToNumbers)
const combinedMap = sumArray(map1, map2);
return numberToSharpAndEmpty(combinedMap).map(v => v.join(''));
}
const numberToSharpAndEmpty = (arr) => {
return arr.map((v1, i1) => {
return v1.map((v2, i2) => {
return (v2 === 0) ? ' ' : '#';
}
)})
console.log(x)
};
const sumArray = (arr1, arr2) => arr1.map((v1, i1) => v1.map((v2, i2) => v2 + arr2[i1][i2]));
const decimalToBinary = (array, n) => array.map(item => item.toString(2).padStart(n, '0'));
const splitToNumbers = (str) => str.split('').map(e => Number(e));