[JavaScript] [1차] 비밀지도

2022. 8. 2. 21:58Algorithm/프로그래머스

level : 1

문제 링크 : [1차] 비밀지도

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

My Solution

function solution(n, arr1, arr2) {
    let answer = [];
    for(let i = 0; i < n; i++){
        answer.push((arr1[i]|arr2[i]).toString(2).padStart(n,"0").split('').map(i=>i==='0'?' ':'#').join(''));
    }
    return answer;
}

풀이방법
n x n matrix에 비밀지도가 담겨져 있는 것이다.

arr1과 arr2에 있는 숫자들을 OR 비트 연산자(|)를 이용하여 벽 부분을 만들고 toString(2)를 이용하여 이진수의 형태의 문자열로 바꿔준다.

이 후 padStart라는 메서드를 이용하여 n개로 통일시켜준다. 부족한 부분은 0으로 채워넣는다.

split이라는 메서드를 이용하여 String을 Array로 변환한 뒤에 map이라는 메서드를 이용하여 0은 띄어쓰기로 1은 #으로 바꿔주고 join이라는 메서드를 이용하여 String으로 변환하였다.

느낀점
그냥 십진수 숫자에서 비트 연산자를 사용하면 이진수로 계산한 후 십진수로 변환된다는 점이 매우 흥미로웠다.