ppotatoG


Back to all posts

[1차] 비밀지도

Written by ppotatoG & Posted on November 18th, 2021

Programmers [1차] 비밀지도

처음 제출한 답

arr1array에 깊은복사

받아온 각 배열의 값을 2진수로 변환

변환한 값을 숫자로 바꿔준 후 더하고 +''로 다시 문자열로 변환

array[i].lengthn과 다르다면, 부족한 자릿수만큼 0 추가

array의 값들을 이미 문자열로 넘겼는데 왜 또 map안에서 문자열로 넘긴거지..

여튼 값들이 0이면 ' ', 아니면 '#'으로 바꾼 후 합쳐주기

function solution(n, arr1, arr2) {
let array = [...arr1];
for(let i = 0; i < arr1.length; i++){
let binary1 = arr1[i].toString(2);
let binary2 = arr2[i].toString(2);
array[i] = (Number(binary1) + Number(binary2) + '');
if(array[i].length !== n){
array[i] = ('0').repeat(n - array[i].length) + array[i];
}
}
return array
.map((val) => (val + '')
.split('')
.map((val2) => {
return val2 === '0' ? val2 = ' ' : val2 = '#';
}
).join(''));
}

다른 답

arr1을 돌며,

각 배열의 값을 이진수로 변환 후 숫자열로 변환 한 값을 value에 담아주기

value를 반환하며, 문자열로 바꿔준 후 padStart로 값 앞에 부족한 0 채워주기

replace로 1, 2는 #으로 0은 ' '로 변환

function solution(n, arr1, arr2) {
return arr1.map((val, idx) => {
let value = Number(val.toString(2)) + Number(arr2[idx].toString(2));
return value
.toString()
.padStart(n, 0)
.replace(/1|2/g, '#')
.replace(/0/g, ' ');
})
}

Posted on November 18th, 2021