프로그래머스 [1차] 비밀지도

» JavaScript

프로그래머스 [1차] 비밀지도

function solution(n, arr1, arr2) {
  let result = [];
  let map1 = [];
  let map2 = [];
  let temp1 = "";
  let temp2 = "";

  // 1
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      temp1 = arr1[i].toString(2);
      temp2 = arr2[i].toString(2);
    }

    // 2
    for (let k = 0; k < n; k++) {
      if (temp1.length < n) {
        temp1 = "0" + temp1;
      }
      if (temp2.length < n) {
        temp2 = "0" + temp2;
      }
    }
    map1.push(temp1);
    map2.push(temp2);
  }

  // console.log(map1, map2);

  // 3
  for (let i = 0; i < map1.length; i++) {
    let tempResult = "";
    for (let j = 0; j < n; j++) {
      if (map1[i][j] === "1" || map2[i][j] === "1") {
        tempResult += "#";
      } else if (map1[i][j] === "0" && map2[i][j] === "0") {
        tempResult += " ";
      }
    }
    result.push(tempResult);
  }

  // console.log(map1, map2, result);

  return result;
}

// 주어진 맵을 한줄씩 2진법으로 바꿈
// 길이는 n과 같으므로 바꾼값이 n보다 짧으면 맨앞에 0을 추가
// 두 지도에 같은 위치끼리 비교
// 둘중 하나라도 벽이면 결과값에 '#'추가
// 둘 다 공백이면 결과값에 ' ' 추가