주어진 2개의 1차원 배열의 10진수를 2진수로 변환하여 2개의 2차원 배열 반복과 비교를 통해서 하나의 1차원 배열을 반환하는 것이 목표인 문제입니다.
2진수로 변환했을 때, "1"이면 벽 부분, "0"이면 공간이고 2개의 지도를 비교하여 하나의 지도라도 같은 위치에 "1"이 있으면 "#"처리하고 둘 다 빈 공간이면 " " (공백) 처리를 해줍니다.
function solution(n, arr1, arr2) {
var answer = [];
let firstMap = [],secondMap = [] //비교할 지도 배열 생성
for (var index = 0; index < arr1.length; index++){
//10진수 값을 2진수로 변환
var first = arr1[index].toString(2).split("")
var second = arr2[index].toString(2).split("")
//만약 변환한 값이 한 변의 길이보다 작으면
if (first.length < n){
//반복문을 위해서 차이나는 길이만큼 "0"을 추가로 넘어줌
var loops = n-first.length
for(var loop = 0; loop < loops; loop++){
first.unshift("0")
}
}
if (second.length < n){
var loops = n-second.length
for(var loop = 0; loop < loops; loop++){
second.unshift("0")
}
}
//각 값을 지도 배열에 넣러줌
firstMap.push(first)
secondMap.push(second)
}
// 지도 배열에서 벽과 공간을 확인할 반복문 작성
for (var index= 0; index < n; index++){
var row = ""
for(var index2 = 0; index2 < n; index2++){
//만약 벽이면 "#"문자열에 추가
if(firstMap[index][index2] === "1" || secondMap[index][index2] === "1" ){
row += "#"
} //벽이 아닌 공간이면 공백을 문자열에 추가
else if(firstMap[index][index2] === "0" || secondMap[index][index2] === "0" ){
row += " "
}
}
answer.push(row)
}
//값 반환
return answer;
}