문제 :
내 풀이 :
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 |