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

konut ko·2022년 11월 1일
1
post-custom-banner

문제

나의 풀이

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
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영
post-custom-banner

0개의 댓글