본문 바로가기
  • 개발 / 공부 / 일상
Programmers

(Programmers) [Lv. 1] 1차 비밀지도

by JJeongHyun 2023. 2. 15.
반응형

문제 설명

  • 숫자로 암호화되어 있는 비밀 지도 2개와 해독 방법 메모지가 있다
  • 각 배열의 원소들을 2진수를 변환하여 숫자 1은 "#", 0은 " " 공백 문자열로 판단한다
    • 여기서 "#" 문자는 벽을 뜻하고, " "공백 문자열은 벽이 없는 부분이다
  • 두 개의 비밀지도 중 하나라도 벽인 부분은 전체 지도의 벽을 뜻한다
  • 전체 지도의 크기는 n, 두 개의 비밀지도를 arr1, arr2이라는 두 배열로 매개변수를 넘겨받는다
  • 전체 지도를 해독하여 "#"과 " " 공백 문자열로 구성된 문자열 배열을 반환하는 solution 함수를 완성하시오

제한사항

  • 1 ≤ n ≤ 16
  • arr1, arr2는 길이 n인 정수 배열로 주어진다
  • 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n이하이다. 즉, 0 ≤ x ≤ 2^n-1을 만족한다

 

입출력 예시

[1차] 비밀지도 입출력 예시

전체 코드

function solution(n, arr1, arr2) {
  let tempArr = [];
  for (let i = 0; i < n; i++) {
    tempArr.push(arr1[i] | arr2[i]);
  }
  tempArr = tempArr.map((item) =>
    item.toString(2).replace(/1/g, "#").replace(/0/g, " ")
  );
  for (let i = 0; i < tempArr.length; i++) {
    if (n - tempArr[i].length !== 0)
      tempArr[i] = " ".repeat(n - tempArr[i].length) + tempArr[i];
  }
  return tempArr;
}