코딩 테스트/프로그래머스 level1
[1차] 비밀지도
fullfish
2022. 9. 8. 03:32


코드
function solution(n, arr1, arr2) {
let binaryArr1 = [];
let binaryArr2 = [];
let sumBinaryArr = [];
for (let i = 0; i < arr1.length; i++) {
binaryArr1.push(arr1[i].toString(2));
binaryArr2.push(arr2[i].toString(2));
sumBinaryArr.push(
(parseInt(binaryArr1[i]) + parseInt(binaryArr2[i]))
.toString()
.split("")
.map((ele) => (parseInt(ele) > 0 ? "#" : " "))
.join("")
.padStart(n)
);
}
return sumBinaryArr;
}
더 좋은 코드
var solution2 = (n, arr1, arr2) =>
arr1.map((a, i) =>
(a | arr2[i]).toString(2).padStart(n, 0).replace(/0/g, " ").replace(/1/g, "#")
);
두개의 배열을 비교하기위해
map의 인자로 index인 i를 만들어서
a와 arr2[i]로 같은 인덱스의 요소를 비교했다
| 는 or로써
a와 arr2[i]를 2진법으로 보았을때 or이다
즉 a가 50 b가 10이라면
각각 2진법으로 표현시
a는 110010
b는 001010이 되므로
a | b는 111010이된다
그리고 정규식 잘 활용하자