JavaScript

[JavaScript] - [1차] 비밀지도

jjangsh 2024. 10. 11. 22:31

문제 :

 

내 풀이 :

function solution(n, arr1, arr2) {
  let answer = []
  for (let i = 0; i < n; i++) {
    let key1 = arr1[i].toString(2).padStart(n, '0');
    let key2 = arr2[i].toString(2).padStart(n, '0');
    let password = ''
    for (let j = 0; j < n; j++) {
      if (key1[j] === '1' || key2[j] === '1') {
        password += '#';
      } else {
        password += ' ';
      }
    }
    answer.push(password);
  }
  return answer;
}

 

for (let i = 0; i < n; i++) {
  • arr1과 arr2의 각 요소를 한 쌍씩 가져와서 변환한다.

 

let key1 = arr1[i].toString(2).padStart(n, '0');
let key2 = arr2[i].toString(2).padStart(n, '0');
  • 정수 arr1[ i ]와 arr2 [ i ]를 각각 toString(2)로 이진수 문자열로 변환한다.
  • padStart(n, '0')를 사용하여 이진수 문자열이 항상 n자리의 길이가 되도록 앞에 '0'을 채워준다. 예를 들어, 5를 2진수로 변환하면 '101'인데, n=5라면 '00101'로 변환된다.

 

for (let j = 0; j < n; j++) {
  if (key1[j] === '1' || key2[j] === '1') {
    password += '#';
  } else {
    password += ' ';
  }
}
  • 이진수 문자열인 key1과 key2의 각 자리(j)를 비교한다.
  • key1[j] === '1' || key2[j] === '1' 이면 비밀지도에서 그 자리를 '#'으로 나타낸다.
  • 두 지도의 그 자리 모두가 '0'이라면, 비밀 지도에서는 그 자리를 빈칸으로 나타낸다.

 

예시)

n = 5;
arr1 = [9, 20, 28, 18, 11];
arr2 = [30, 1, 21, 17, 28];

 

 

  • 각 숫자는 이진수로 변환된다.
    • arr1[0] = 9 → key1 = '01001'
    • arr2[0] = 30 → key2 = '11110'
  • 두 이진수를 비교하여 비밀 지도의 첫 번째 행을 만든다.
    • key1: '01001', key2: '11110'
    • 비밀 지도 첫 번째 행 → '#', '#', '#', '#', '#

위 과정을 n번 반복한다.

 

'JavaScript' 카테고리의 다른 글

JavaScript - localeCompare()  (0) 2024.08.12
JavaScript - Map과 Set  (0) 2024.07.30
JavaScript - 일급 객체로서의 함수  (0) 2024.07.30
JavaScript - ES6 문법  (0) 2024.07.30
JavaScript - 배열  (0) 2024.07.29