Algorithm
프로그래머스 - [1차] 비밀지도
b._.omi
2023. 5. 20. 16:55

문제



풀이
먼저 arr1과 arr2의 각요소마다 비트 or 연산을 한 뒤 sumArr 에 추가한다
이때, or 연산된 최상위 비트가 0이라 생략된 경우 n 길이가 될 때까지 최상위 비트에 0을 추가한다
배열의 요소가 1이면 '#', 0이면 ' '으로 변환한다
function solution(n, arr1, arr2) {
let answer = [];
let sumArr = [];
// arr1과 arr2 or 연산하기
for(let i = 0; i < n; i++) {
sumArr.push((arr1[i] | arr2[i]).toString(2));
}
// 위의 연산결과의 배열 길이가 n보다 작을경우 즉, 최상위 비트가 0이라 생략된 경우
for(let i = 0; i < sumArr.length; i++) {
sumArr[i] = sumArr[i].padStart(n, '0');
}
// 배열의 요소가 1이면 '#', 0이면 ' '으로 변환
for(let i = 0; i < sumArr.length; i++) {
answer.push(sumArr[i].replace(/1|0/g, num => +num ? '#' : ' '));
}
return answer;
}