https://programmers.co.kr/learn/courses/30/lessons/17681
bit 연산자를 통해서 문제를 해결할 수 있다.
- 지도 1과 지도 2의 숫자 비트 합 = a | b
1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
- 최 우측 비트 연산 = a & 1
- 오른쪽으로 한칸 밀어 내기 = a >> 1
function solution(n, arr1, arr2) {
let mapInt = new Array(arr1.length);
let originMap = new Array(n).fill('').map(()=>new Array(n).fill(''));
let result = new Array();
for(let i = 0; i < arr1.length ; i++){
mapInt[i] = arr1[i] | arr2[i];
}
for(let row = 0; row < n; row++){
for(let col = n-1; 0 <= col ; col--){
originMap[row][col] = mapInt[row] & 1 == 1 ? '#' : ' ';
mapInt[row] = mapInt[row] >> 1;
}
result.push(originMap[row].join(''));
}
return result;
}
728x90
반응형
'Problem Solving' 카테고리의 다른 글
가사 검색 (0) | 2020.09.04 |
---|---|
[1차] 뉴스 클러스터링 (0) | 2020.09.04 |
실패율 (0) | 2020.09.03 |
[1차] 다트 게임 (0) | 2020.09.03 |
소수 찾기 (0) | 2020.09.03 |