2018 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/17681
function solution(n, arr1, arr2) {
//지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다.
//지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.
var temp = [];
var answer = [];
for(let i=0;i<arr1.length;i++){
const v2 = (arr1[i] | arr2[i]).toString(2).padStart(n,"0");
temp.push(v2);
}
for(let i=0;i<n;i++){
let ans = '';
for(let j=0;j<n;j++){
if(temp[i][j] ==='0') ans = ans + ' ';
else ans = ans + '#';
}
answer.push(ans);
}
return answer;
}
" #### "로 반환되어야 하는 것이 맨 앞 부분 공백 제거로 "#### "처럼 출력되어 초반에 틀렸던 문제이다. padStart() 메서드를 통해 해결할 수 있었다.
💿 padStart()
현재 문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환한다. 채워넣기는 대상 문자열의 시작(좌측)부터 적용된다.
즉, 문자열의 첫 공백을 반영하여 반환하기 위한 메소드이다.
function solution(n, arr1, arr2) {
let result = arr1.map((a, i) =>
(a | arr2[i]) // 비밀지도는 arr1[i] or arr2[i]
.toString(2) // 10진수는 2진수로
.padStart(n, 0) // 맨 앞 0 제거되지 않도록
.replace(/0/g, " ") // 0은 공백으로
.replace(/1/g, "#") // 1은 #으로
);
return result;