연습장/프로그래머스 문제풀이

[프로그래머스 Level 1] [1차] 비밀지도 - JavaScript

Tesseractjh 2022. 5. 6. 00:31

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

풀이

function solution(n, arr1, arr2) {
    return [...Array(n)].map((_, i) => 
        [...(arr1[i] | arr2[i])
            .toString(2)
            .padStart(n, ' ')]
            .map(v => +v ? '#' : ' ')
            .join('')
    );
}

비트마스킹을 이용하여 겹쳐진 두 지도를 논리합 연산(|)으로 구하고,

이렇게 구한 지도를 2진수 문자열로 변경하여 0은 빈 문자열, 1은 #으로 바꿔서 해결하였다.

10진수 수를 2진수 문자열로 변환할 때, 자리수에 상관없이 앞에 0은 모두 생략이 되므로,

String.prototype.padStart를 활용하여 0이 생략되어 빈 부분을 빈 문자열로 메꾸었다.