문제



코드

function solution(n, arr1, arr2) {
    // 내가 푼 풀이
    var answer = [];
    for(let i=0; i<n; i++) {
        const sum = parseInt(arr1[i].toString(2)) + parseInt(arr2[i].toString(2));
        
        answer.push(sum.toString()
                       .padStart(n, '0')
                       .replace(/1|2/g, '#')
                       .replace(/0/g, ' '));
    }
    return answer;
    // 비트 or 연산자
    return arr1.map((v, i) => (v|arr2[i]).toString(2)
                                         .padStart(n, '0')
                                         .replace(/1/g, '#')
                                         .replace(/0/g, ' '));
}

내가 푼 풀이

  • parseInt와 toString(2)

    • 2진법 string으로 바꾼 후 문자열을 다시 정수로 바꿔 서로 더함
    • 그러면 0 1 2 세가지 숫자로 이뤄진 숫자 sum이 나옴
  • padStart(n, '0')

    • n자리 수로 만들고 앞 빈공간을 0으로 채움
    • 같은 방법을 뒤로 채우는 padEnd 함수가 있다.
  • replace 정규식

    • /1|2/g 는 1과 2 모두 바꾼다는 의미 (/[1-2]/g도 가능)

map과 비트or 연산자

  • ##비트 or 연산자
    • | 연산자는 숫자를 2진수로 바꿔 두 숫자 중 하나라도 1이 있으면 1로 반환한다.
    • arr1과 arr2의 같은 인덱스 숫자를 |로 비교후 toString(2)하면 원하는 위 문제에서 원하는 결과 얻을 수 있음

참고 사이트

profile
쿼카에요

0개의 댓글