[프로그래머스] 비밀지도 (자바스크립트/javascropt)

스카치·2023년 2월 22일
0

풀이1

function solution(n, arr1, arr2) {
    let answer = Array.from({length:n}, () => '');
    arr1 = arr1.map(v => v.toString(2).padStart(n,'0'))
    arr2 = arr2.map(v => v.toString(2).padStart(n,'0'))

    for (let i=0; i<n; i++){
        for (let j=0; j<n; j++){
            if (arr1[i][j] === '0' && arr2[i][j]==='0') answer[i] += ' '
            else answer[i] += '#'
        }
    }
    return answer;
}

풀이2

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;
}

풀이3

// 비트연산자 or 을 이용한 풀이 (a|b) => a와 b를 이진수로 변환했을 때 어느 한쪽이 1이면 1 반환
function solution(n, arr1, arr2) {
    return (arr1.map( (v,i) => (v |arr2[i]).toString(2).padStart(n,0).replace(/0/g,' ').replace(/1/g,'#')))
}

0개의 댓글