문제 링크
https://programmers.co.kr/learn/courses/30/lessons/17681
풀이
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이 생략되어 빈 부분을 빈 문자열로 메꾸었다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 2] 거리두기 확인하기 - JavaScript (0) | 2022.05.09 |
---|---|
[프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript (0) | 2022.05.09 |
[프로그래머스 Level 1] 신규 아이디 추천 - JavaScript (0) | 2022.04.23 |
[프로그래머스 Level 3] 다단계 칫솔 판매 - JavaScript (0) | 2022.04.11 |
[프로그래머스 Level 1] 완주하지 못한 선수 - JavaScript (0) | 2022.04.06 |