프로그래머스 : 비밀지도 (level 1)

김진권·2021년 8월 5일
0

algorithm

목록 보기
6/10

<문제>


1. 나의 풀이

function solution(n, arr1, arr2) {
    let answer = [];
    let answerString = '';
    let a;
    let b;

    for (let i = 0; i < n; i++) {
        a = arr1[i].toString(2);
        b = arr2[i].toString(2);
        let aN = n - a.length;
        let bN = n - b.length;

        if (a.length !== n) {
            for (let i = 0; i < aN; i++) {
                a = 0 + a;
            }
        }

        if (b.length !== n) {
            for (let i = 0; i < bN; i++) {
                b = 0 + b;
            }
        }

        // a랑 b를 비교하라 
        for (let i = 0; i < n; i++) {
            if (a[i] === '0' && b[i] === '0') {
                answerString += ' ';
            } else {
                answerString += '#';
            }
        }
        // answer에 알맞은 답을 넣어라.
        answer.push(answerString);
        answerString = '';
    }

    return answer;
}

✳️ 풀이 방법 :

1️⃣ Number.prototype.toString() 을 활용해서 2진법의 수를 구했다.


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

✳️ 풀이 방법 :

1️⃣ single vertical var 사용


출처 :
프로그래머스 : 비밀지도 (level 1)
Bitwise OR (|) - JavaScript | MDN
String.prototype.repeat() - JavaScript | MDN

profile
start!

0개의 댓글