두 지도를 합쳤을 때 어느 한쪽이 "#"이라면 전체 지도도 "#"이다.
전체 치도를'#' 와 " "(공백)
으로 구성된 문자열 배열로 출력하는 문제
🌈문제가 어렵진 않다. 하지만 "#"을 반환하는 코드를 어떻게 작성해야 할지 고민을 좀 하는 시간이 필요했다.
repeat()
나 padStart()
를 사용했다function solution(n, arr1, arr2) {
var answer = [];
var temp = ""
arr1 = arr1.map(d=>d.toString(2)) //2진수로 변환
arr2 = arr2.map(d=>d.toString(2))
for(var i=0; i<arr1.length; i++){
for(var j=1; j<=n; j++){
//arr1[i]와 arr2[i]의 맨 마지막 값부터 탐색
//어느 하나라도 1이면 "#"반환 그렇지 않으면 공백 반환
if(arr1[i][arr1[i].length-j] == 1 || arr2[i][arr2[i].length-j] == 1) temp += "#"
else temp += " ";
}
//맨 뒤부터 탐색했기 때문에 뒤집어 주어야 함
answer.push(temp.split("").reverse().join(""))
temp = ""
}
return answer;
}
🌈문제가 어렵지는 않았지만 다른 사람의 코드를 보면서 이렇게 간단히 만들 수 있고, 이런 기능들을 사용할 수 있다는 것을 배운 문제이기 때문에 작성해 본다.
repeat()
나 padString()
을 사용할 수 있다.비트연산자: |
를 활용할 수 있다.function solution(n, arr1, arr2) {
return arr1.map((i, index) =>('0'.repeat(n) + (i | arr2[index]).toString(2)).slice(-n)).map(i => i.replace(/0/g, ' ').replace(/1/g, '#'));
}