풀이
김영준
// 이진수로 바꿔주는 함수 function toBinary(n, arr){ const returnArr = []; for(let i = 0; i < arr.length; i ++){ let temp = arr[i].toString(2); while(temp.length < n){ temp = "0"+temp; // 앞에 0을 붙임 } returnArr.push(temp) } return returnArr; } function solution(n, arr1, arr2) { const result = []; const binaryArr1 = toBinary(n, arr1); const binaryArr2 = toBinary(n, arr2); for(let i = 0; i < n; i ++){ let temp = ""; for(let j = 0; j < n; j ++){ // 두 배열 값이 0이면 " ", 아니면 # binaryArr1[i][j] === "0" && binaryArr2[i][j] === "0" ? temp +=" " : temp += "#"; } result.push(temp); } return result; }
이종현
function solution(n, arr1, arr2) { const answer = []; const arr = []; let word = ''; for (let i = 0; i < arr1.length; i++) { arr1[i] = arr1[i].toString(2); arr2[i] = arr2[i].toString(2); if(arr1[i].length !== 0) answer.push(Number(arr1[i]) + Number(arr2[i])); let str = String(answer[i]); if (str.length !== n) word += ' '.repeat(n - str.length); for (let j = 0; j < n; j++) { if (str[j] > 0) word += '#'; if (str[j] == 0) word += ' '; } arr.push(word); word = ''; } return arr; }
박노철
function solution(n, arr1, arr2) { // const answer=arr1.map((i,idx)=>{ // // 비트연산자 | 는 두 대상의 이진수가 0인 자리만 0으로 반환한다. // i=(i|arr2[idx]).toString(2); // //길이를 채우주기 위해 padStart로 부족한자리는 0으로 채우준다. // i=i.padStart(n,0); // //1을 #, 0을 " "으로 바꿔준다. // return i.replaceAll("1","#").replaceAll("0"," "); // }) // return answer; const bitAr1=arr1.map(v=>v.toString(2).padStart(n,0)); const bitAr2=arr2.map(v=>v.toString(2).padStart(n,0)); const map=Array.from({length:n}, ()=>Array.from({length:n}, ()=>1)); for(let i =0; i<n; i++){ for(let j=0; j<n; j++){ const bit1=bitAr1[i][j]; const bit2=bitAr2[i][j]; map[i][j]=bit1==="0"&& bit2==="0"? " ":"#" } map[i]=map[i].join(""); } return map }
이민희
function getBinaryString(targetLength, number) { const binaryString = number.toString(2) return '0'.repeat(targetLength - binaryString.length) + binaryString } function solution(n, arr1, arr2) { const map1 = arr1.map(number => getBinaryString(n, number)) // [9, 20, 28, 18, 11] -> ['01001', '10100', '10010', '01011'] const map2 = arr2.map(number => getBinaryString(n, number)) return map1.reduce((mapArray, currRow, rowIndex) => { // 한 행씩 순회 return [...mapArray, currRow.split('').reduce((rowString, currItem, colIndex) => { // 현재 순회 중인 행의 한 칸(currItem)씩 순회, 해당 행렬의 값을 map2에서도 가져온다. if (parseInt(currItem) + parseInt(map2[rowIndex][colIndex]) > 0) return rowString + '#' // 둘 중 하나라도 1이면 # return rowString + ' ' }, '')] }, []) }
박건우
function solution(n, arr1, arr2) { let answer = []; for(let i = 0; i<n; i++){ // 이진수로 변환 let binary1 = arr1[i].toString(2); let binary2 = arr2[i].toString(2); // n의 길이가 될때까지 첫째 자리에 0을 삽입 while(binary1.length < n){ binary1 = "0" + binary1; } while(binary2.length < n){ binary2 = "0" + binary2; } let result = ""; // 둘 다 "1"일때만 "#"을 넣고 그렇지 않으면 " " 삽입 for(let j = 0; j<n; j++){ result += (binary1[j] === "1" || binary2[j] === "1") ? "#" : " "; } // 결과를 answer에 푸쉬 answer.push(result); } return answer; }
박주연
function solution(n, arr1, arr2) { const answer = []; const binaryArr1 = []; const binaryArr2 = []; // 이진수로 만드는 함수 만들기 - arr1, arr2 재사용 위해 function binaryNumber(arr, resultArr) { for (let i of arr) { let x = i.toString(2); if (x.length != n) { x = "0".repeat(n - x.length) + x; } resultArr.push(x); } } binaryNumber(arr1, binaryArr1); binaryNumber(arr2, binaryArr2); for (let i = 0; i < n; i++) { let result = ""; for (let j = 0; j < n; j++) { // 1 || 1 일때만(모두 공백일때만) 전체지도도 공백 result += Number(binaryArr1[i].charAt(j)) || Number(binaryArr2[i].charAt(j)) ? "#" : " "; } answer.push(result); } return answer; }