プログラマーLv 1.秘密の地図


質問する


2018 KAKAO BLIND RECRUITMENT
https://programmers.co.kr/learn/courses/30/lessons/17681

に近づく


ビット演算でOR演算を使用する問題.
I/O例の「10011」が「###」の場合、「0」の繰り返しを防ぐ必要がありますか?例題部分の間違いのようです.

コード#コード#


js

function solution(n, arr1, arr2) {
    const ORarr = arr1.map((x,i) => {
        var num = (x | arr2[i]).toString(2);
        while(num.length < n){
            num = "0" + num;
        }
        //num = num.replace(/0+/g, "0");
        return num
    })
    let result = [];
    
    ORarr.forEach(x => {
        var r = "";
        for(var i=0; i<x.length; i++){
            x[i] == "1" ? r+="#" : r+=" ";
        }
        result.push(r);
    })
    
    return result;
}

python

def solution(n, arr1, arr2):
    result = []
    
    for i in range(0, n) :
        r = bin(arr1[i] | arr2[i])[2::]
        # bin()를 이용하여 2진수로 만들게 되면 앞에 0b가 붙기 때문에 슬라이싱 처리
        
        zero = n-len(r)
        # while문을 쓰지 않았음
        r = "0"*zero + r
        
        temp = ""
        for j in range(0, len(r)) :
            if r[j]=="1" :
                temp += "#"
            else :
                temp += " "
            
        result.append(temp)
        
    return result