지도는 한 변의 길이가 n인 정사각형 배열 형태
각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다
지도 2장이 주어지는데 암호화 된 배열로 주어지고, 부호화 했을 때 얻어지는 이진수에 해당하는 배열 값이다
getMap
함수를 작성한다toString
내장 메서드를 이용하여 2진수 변환을 해주고 주어진 n의 길이보다 짧게 변환 되었다면 repeat
으로 0만큼 앞의 문자열을 채워준다 function solution(n, arr1, arr2) {
const result = [];
let map1 = getMap(arr1,n)
let map2 = getMap(arr2,n)
for(let i=0; i<n; i++){
// debugger
result[i] = '';
for(let j=0; j<n; j++){
if(map1[i][j] === '1' || map2[i][j] === '1') result[i] += '#'
else result[i] += ' '
}
}
return result
}
function getMap(arr,n){
return arr.map((el) => {
let val = el.toString(2) // 2진수 변환
let repeatNum = n-val.length // 구해진 값에서 n길이만큼 되는지 확인 안되면 0으로 앞 채워주기
return repeatNum !== 0 ? '0'.repeat(repeatNum) + val : val
})
}
배열안의 타입을 지정해 주지 않고 문자열을 추가하게 되면 undifined 가 먼저 들어간다
실행한 결괏값
["undefined#####","undefined# # #","undefined### #","undefined# ##","undefined#####"]이(가)
기댓값 ["#####","# # #","### #","# ##","#####"]와(과) 다릅니다.
고차함수메서드를 쓰고싶었으나 이중 for문 외에 어떻게 값을 비교할 지 생각을 못했다.
조금 더 빠른 시간복잡도를 위해 개선하고 싶었는데 마땅한 수가 생각이 나지 않아
다른분들의 풀이를 보고 참고해야겠다.