프로그래머스 Lv1. 비밀지도

용상윤·2021년 5월 4일
0

문제

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


접근

비트연산 중 OR 연산을 이용하는 문제.

입출력 예제에 "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

profile
달리는 중!

0개의 댓글

관련 채용 정보