프로그래머스 레벨1 [1차]비밀지도 해답 이해

ᄋᄋ·2023년 3월 25일
0
//해답

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

여기서 이해 안 가는 부분 두가지: |, +a 는 대체 뭘 의미하는가?

참고_링크를 통해 알 수 있었다.

  • |: 비트 OR 연산자(a | b)로, 두 피연산자의 각 자리 비트의 값이 모두 0인 위치에 0을 반환한다.

    9 | 30 = 31이고, 31의 2진수는 11111이다.
    9의 2진수인 01001과 30의 2진수인 11110를 예시로 둘 때, 둘 다 0이면 0, 둘 중 하나라도 1이면 1을 반환하여 11111이 되고 이를 10진수로 바꾸면 31이다.

  • +a: 단항 연산자, 피연산자가 숫자 타입이 아니면 숫자로 변환을 시도한다.

    +"3"3을 반환, +true1을 반환한다.
    반대로, -"3"-3을 반환한다.

profile
개발자A

0개의 댓글