https://programmers.co.kr/learn/courses/30/lessons/17681?language=javascript
지도: 한 변의 길이가 n인 정사각형 배열
지도1과 지도2는 정수 배열로 암호화되어 있음
암호화를 풀면 -> 지도의 벽 부분: 1, 공백부분 : 0
정수를 이진수로 바꾸어 암호 해독한다.
암호화된 지도1과 지도2에서 어느 하나라도 벽인 부분은
원래 지도에서도 벽이고,
지도1과 지도2에서 모두 공백이라면
원래 지도에서도 공백이다.
암호화된 지도들을 해독하여 원래의 비밀지도를 '#'과 공백으로 구성된 문자열 배열로 출력
1. answer배열 : 길이가 n만큼인 배열 생성
2. arr1과 arr2 지도에 있는 자연수들 -> 이진수로 변환
3. arr1과 arr2 배열에서 벽과 공백인 부분 파악하여 암호 해독
function solution(n, arr1, arr2) {
let answer = Array.from({length: n}, () => "");
for(let i = 0; i < arr1.length; i++) {
let temp = [...arr1[i].toString(2)];
if (temp.length < n) {
while(temp.length !== n) {
temp.unshift('0');
}
}
arr1[i] = temp;
}
for(let i = 0; i < arr2.length; i++) {
let temp = [...arr2[i].toString(2)];
if (temp.length < n) {
while(temp.length !== n) {
temp.unshift('0');
}
}
arr2[i] = temp;
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n ; j++) {
if (arr1[i][j] === '0' && arr2[i][j] === '0') answer[i] += ' ';
else answer[i] += '#';
}
}
return answer;
}
function solution(n, arr1, arr2) {
var answer = [];
for(let i=0; i<n; i++){
// toString(2)은 이진수로 반환하는 것.
const bin = (arr1[i] | arr2[i]).toString(2);
// console.log(bin);
let line = [];
for(let j = bin.length-n; j<bin.length; j++) { // j가(인덱스값)이 -1일 경우 undefined 반환.
if(bin[j] === '1') { // 1이면 '#', 그 외 ' '
line.push('#');
} else {
line.push(' ');
}
}
answer.push(line.join(''));
}
return answer;
}
var solution=(n,arr1,arr2)=>arr1.map((a,i)=>(a|arr2[i]).toString(2).padStart(n,0).replace(/0/g,' ').replace(/1/g,'#'))
아... 이거 비트연산자로 해결해야 하는 그런 문제구나...