[ALGO] 프로그래머스 - 비밀지도(자바스크립트, javascript)

hj·2021년 7월 2일
0

알고리즘

목록 보기
29/35
post-thumbnail

프로그래머스 - 비밀지도

과정

십진수를 이진수로 만드는 num.toString(2)를 이용해서 이진수로 만든 다음 지도 길이에 맞게 0을 추가해주는 코드를 짰었다.

n(지도의 크기) = 5일 때, num = 1 이면 1.toString(2) = 1로 바껴서 지도 크기에 맞게 앞 부분에 0을 4개를 추가해준다. 근데 00001이 되어야 하는데 자꾸 0001로 앞 부분에 0이 3개 밖에 추가가 안됐다. 다른 숫자들은 잘 추가됐음.

그래서 그냥 직접 지도 크기만큼 10진수를 2진수로 만드는 함수를 만들었다.

풀이

function solution(n, arr1, arr2) {
    let answer = [];
    
    let tmp1 = [];
    let tmp2 = [];
    
    function makeTwo(num) {
        let arr = [];
        for (let i = 0; i < n; i++) {
            arr.unshift(num % 2);
            num = parseInt(num / 2);
        }
        return arr;
    }
    
    arr1.map(item => {
        tmp1.push(makeTwo(item));
    });
    
    arr2.map(item => {
        tmp2.push(makeTwo(item));
    });
    
    for (let i = 0; i < n; i++) {
        answer.push('');
        for (let k = 0; k < n; k++) {
            if ((tmp1[i][k] === 0) && (tmp2[i][k] === 0)) {
                answer[i] += ' ';
            }
            else {
                answer[i] += '#';
            }
        }
    }
    
    return answer;
}

0개의 댓글