[1차] 비밀지도

hyuri·2023년 9월 23일
0

코딩테스트 연습

목록 보기
33/70

내가 작성한 답

function solution(n, arr1, arr2) {
    let answer = [];
    for(let i = 0; i < n; i++){
        const a = arr1[i].toString(2).padStart(n, 0);
        const b = arr2[i].toString(2).padStart(n, 0);
        let answerAdd = ''
        for(let j = 0; j < n; j++){
            a[j] === '1' || b[j] === '1' ? answerAdd += '#' : answerAdd += ' ';
        }
        console.log(answerAdd);
        answer.push(answerAdd);
    }
    // console.log(answer);
    return answer;
}

다른 답

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

해석

나는 2진수로 바꾸고 padStart를 써서 0을 채우고 1인 경우 #을 아닌 경우 ' '을 계속해서 더했다.

깔끔한 답은 map함수를 통해 순회하도록 하고 하나라도 1일 경우 합치기 위해 비트 연산을 사용했다. 그리고 문자열 내에서 1은 #으로 0은 공백으로 바꿨다.

profile
개발자가 되고 싶은 지망생

0개의 댓글