입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.
정직한 풀이
각 배열의 숫자들을 2진수로 바꾸고, 각 자릿수를 비교하여 새로운 문자열로 변환했다.
function solution(n, arr1, arr2) {
function decToBin(num) {
num = num.toString(2)
if (num.length < n) {
num = '0'.repeat(n - num.length) + num
}
return num
}
arr1 = arr1.map(decToBin)
arr2 = arr2.map(decToBin)
let answer = []
for (let i = 0; i < n; i++) {
let el = ''
for (let j = 0; j < n; j++) {
if (arr1[i][j] == '1' || arr2[i][j] == '1') el += '1'
else el += '0'
}
answer.push(el)
}
answer = answer.map((el) => {
let newEl = ''
for (let i = 0; i < n; i++) {
if (el[i] == '1') newEl += '#'
else newEl += ' '
}
return newEl
})
return answer
}
function solution(n, arr1, arr2) {
return arr1.map((v, i) => addZero(n, (v | arr2[i]).toString(2)).replace(/1|0/g, a => +a ? '#' : ' '));
}
const addZero = (n, s) => {
return '0'.repeat(n - s.length) + s;
}
var solution=(n,a,b)=>a.map((a,i)=>(a|b[i]).toString(2).padStart(n,0).replace(/0/g,' ').replace(/1/g,'#'))
두 풀이 모두 비트연산자와 'padStart', 그리고 정규표현식을 활용한 replace
메서드를 사용했다.
따로 포스팅
따로 포스팅