[1차] 비밀지도

RyuIsangGo🤘·2023년 8월 22일
0

문제

나의코드

const solution = (n, arr1, arr2) => {
    // 암호화된 숫자를 해독해야 한다.
    // 하나라도 '#'(1)벽이면 그 자리는 1이다. 
    // 둘다 ' '공백(0)이면 그 자리는 0이다.
    let newArr1 = arr1.map((x) => {
        let newX = x.toString(2);
        if(newX.length < n) {
          newX = '0'.repeat(n-newX.length) + newX;
        }
        return newX;
    });
    
    let newArr2 = arr2.map((x) => {
        let newX = x.toString(2);
        if(newX.length < n) {
          newX = '0'.repeat(n-newX.length) + newX;
        }
        return newX;
    });

    return newArr1.map((x, i) => {
        let newX = '';
        for(let indexOfStr = 0; indexOfStr < n; indexOfStr++) {
            Number(x[indexOfStr]) || Number(newArr2[i][indexOfStr]) ? newX += '#' : newX += ' ';
        }
        return newX;
    })
}

로직흐름

arr1 각각의 요소를 2진수로 바꾼 배열 newArr1을 만든다.
단, newArr1의 모든 요소는 n의 자리인 2진수여야 한다. 바꾼 2진수의 길이가 n개보다 작다면 부족한만큼 앞에 0을 붙인다.

마찬가지로 arr2에서도 위와 동일한 방법으로 newArr2를 만든다.

newArr1와 newArr2의 요소를 순회하면서 해당 요소를 또 다시한번 순회해서 이루고 있는 0,1 이 두가지로 구성된 요소 안 요소를 뜯어본다.
만약
0 || 0 -> 0
1 || 0 -> 1
0 || 1 -> 1
1 || 1 -> 1
위의 상황중 어떤 상황인지 확인하고 1이라면 '#', 0이라면 공백(' ')으로 요소 안 요소를 하나씩 바꿔나간다.

가장 바깥 순회까지 모두 마친 뒤, 새로 만들어진 배열을 반환한다.

profile
이전 블로그 입니다.

0개의 댓글