[1차] 비밀지도

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

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