개발자/프로그래머스 알고리즘

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 js ★★★☆☆

YoungDogg 2022. 2. 7. 14:58

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

 

구현문제


내 코드

const elements2Binry = (n, arr) =>{
  // 배열 값들을 이진법으로 만들고 
  // console.log(`arr:${arr}`);
  let result = [];
  for(let i = 0; i < arr.length; i++){
      let arrNum = arr[i];
      // console.log(`arrNum:${arrNum}`);
      let decmal2BinryArr = []; 
      
  // 2진법으로 바꾸기
  while(arrNum > 1){
        decmal2BinryArr.unshift(arrNum % 2);
        arrNum = Math.floor(arrNum / 2);
      }
      decmal2BinryArr.unshift(arrNum);
      
      // 0 채우기
      while(decmal2BinryArr.length !== n){
        decmal2BinryArr.unshift(0);
      }
      
      // console.log(`decmal2BinryArr:${decmal2BinryArr}`);
      result.push(decmal2BinryArr);
  }
  return result;
}


const solution = (n, arr1, arr2) => {
    let answer = [];
    let binaryArr1 = [];
    let binaryArr2 = [];
    let newArr = [];
    binaryArr1 = elements2Binry(n, arr1);
    binaryArr2 = elements2Binry(n, arr2);
    
    // console.log(binaryArr1);
    // console.log(binaryArr2);
    // console.log("===========");
    
    // 그 이진법을 비교해서 
    // 벽, 공백으로 만들자
    for(let i = 0; i < n; i++){
      for(let j = 0; j < n; j++){
        if(binaryArr1[i][j] === 0 && binaryArr2[i][j] === 0){
          binaryArr1[i][j] = " ";
        }
        else{
          binaryArr1[i][j] = '#';
        }
      }
    }
    // console.log(binaryArr1);
    for(let i = 0; i < binaryArr1[0].length; i++){
      binaryArr1[i] = binaryArr1[i].join('');
    }
    
    return binaryArr1;
};