본문 바로가기
코딩테스트

[1일1코👨🏻‍💻] Lv.1 비밀지도.js - 프로그래머스

by Jacob93 2020. 10. 1.

2020.10.01

출처 : 프로그래머스

📝문제

[1차] 비밀지도

✏️해답

function solution(n, arr1, arr2) {
    let answer = [];
    let result = [];
    let arr3=[];
    let arr4=[];

    let change = [];
    for(let i=0;i<n;i++){
        let y;
        /// 2진수로 변환해서 새로운 배열에 추가
        arr3.push(parseInt(arr1[i].toString(2)));
        arr4.push(parseInt(arr2[i].toString(2)));

        /// 2진수로 변환된 것끼리 더해서 String으로 형변환
        if((arr3[i]+arr4[i]).toString().length!=n){
            y = '0'+(arr3[i]+arr4[i]).toString();
            /// 자릿수가 모자르면 앞에 0추가
            if(y.length<n){
                for(let m=y.length;m<n;m++){
                    y = '0'+y;
                }
            }
        }
        result.push(y==null ? (arr3[i]+arr4[i]).toString():y);

    }
    /// 1이상의 숫자는 #으로 대체, 0은 ' '으로 대체
    for(let i=0;i<n;i++){
        change.push(result[i].replace(/[1-9]/g,'#'));
        answer.push(change[i].replace(/[0]/g,' '));
    }
    return answer;
}

회고🧐

처음에 좀 뻘짓했음.
이유는 2인수로 변환했을때부터 자릿수를 맞추려고 했음. 굳이 그럴필요 없었고, 계산 후에 해도 상관없었음.

댓글