1일 1코테 day 42 _ 비밀지도

konut ko·2022년 11월 1일
1

문제

나의 풀이

function solution(n, arr1, arr2) {
    let map = []

    for(i=0; i<n; i++){
        let arrLine1 = arr1[i].toString(2)
        let arrLine2 = arr2[i].toString(2)

        if(arrLine1.length < n){
            arrLine1 = '0'.repeat(n-arrLine1.length)+ arrLine1}
        if(arrLine2.length < n){
            arrLine2 = '0'.repeat(n-arrLine2.length)+ arrLine2}

        let mapLine = ''
        for(j=0; j<n; j++){   
            let value = arrLine1[j]*1 + arrLine2[j]*1
            console.log(arrLine1[j], arrLine2[j], value)
            if( value == 0){
                mapLine += ' '
            }else{ mapLine += '#' }
        }
        map.push(mapLine)
    }
    return map
}

2진법 변환하는 나눗셈 하기 싫어서 꾸역꾸역 문자열을 맞춰 풀었다

얼마나 허접했으면 3점 주냐..ㅋㅋㅋㅋ

넘의 풀이


function solution(n, arr1, arr2) {
    let num1, num2, s;
    let answer = [];
    //manually turning decimals to binaries cos i can!
    for (let i=0; i<n; i++){
        num1 = arr1[i];
        num2 = arr2[i];
        s = '';
        for (let j=0; j<n; j++){
            s = (num1%2 + num2%2) ? '#'+s : ' '+s;
            num1 = Math.floor(num1/2);
            num2 = Math.floor(num2/2);
        }
        answer.push(s);
    }    
    return answer;
}

arr1/2 와 arr1%2를 따로따로 변수에 담지 않고
나머지 계산 끝난 바로 다음 줄에 덮어쓰기로 담아서 코드가 깔끔 간결해졌다.
멋지당..

profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글

관련 채용 정보