100/100
30분소요
function solution(n, arr1, arr2) {
const binaryArr1 = arr1.map((val,idx)=>{
let changeBinaryArr1 = val.toString(2)
const addArr1SpaceCount = arr1.length - changeBinaryArr1.length
changeBinaryArr1 = ' '.repeat(addArr1SpaceCount).concat(changeBinaryArr1).replace(/[1]/g,'#').replace(/[0]/g,' ')
return changeBinaryArr1
})
const binaryArr2 = arr2.map((val,idx)=>{
let changeBinaryArr2 = val.toString(2)
const addArr2SpaceCount = arr1.length - changeBinaryArr2.length
changeBinaryArr2 = ' '.repeat(addArr2SpaceCount).concat(changeBinaryArr2).replace(/[1]/g,'#').replace(/[0]/g,' ')
return changeBinaryArr2
})
return binaryArr1.map((binaryRowArr1,row)=>{
return binaryRowArr1.split('').map((binaryVal,column)=>{
if(binaryVal === ' ' && binaryArr2[row][column] === ' ')
return ' '
else
return '#'
}).join('')
})
}
천천히 접근했다.
- 각각의 #과 공백을 가진 binaryArr1 과 binaryArr2를 만들고
이를 순회하면서 둘다 공백일때와 그외를 비교하며 반환을 처리했다.
기본적으로 간단한 이진수 변환인 toString(2)을 베이스로
이진수로 바꾼 크기만큼 존재하지않는 남은 부분을 메울수 있는 repeat의 추가사용법과
map의 활용성에 따르는 split으로 분리 후 다시 일차원 배열로 만드는 join 메소드까지 다양한 메소드를 이해하고 사용하는 것이 필요했다.