문제 번호
알고리즘 분류
문제 풀이
toString(2)를 사용해서 원하는 숫자를 2진수로 변환하면 가장 큰 자리수가 0번 인덱스에 들어가게된다. 그래서 문제에서 주어진 숫자들을 2진수로 변환하고 reverse()를 사용하여 뒤집는다.
let first = arr1[i].toString(2).split('').reverse();
let second = arr2[i].toString(2).split('').reverse();
그리고 이 결과로 만들어진 배열을 n-1 번 인덱스부터 탐색한다. 가장 왼쪽에 위치한 칸의 내용을 가장 먼저 넣기위함이다.
#
##
##(공백)
##(공백)#
##(공백)#(공백) 이런식으로.
for(let j=n-1; j>=0; j--){
if( Number(first[j]) === 1 || Number(second[j]) === 1)
map += '#';
else
map += ' ';
}
answer.push(map);
전체코드
function solution(n, arr1, arr2) {
var answer = [];
for(let i=0; i<n;i++){
let map = '';
let first = arr1[i].toString(2).split('').reverse();
let second = arr2[i].toString(2).split('').reverse();
for(let j=n-1; j>=0; j--){
if( Number(first[j]) === 1 || Number(second[j]) === 1)
map += '#';
else
map += ' ';
}
answer.push(map);
}
return answer;
}
특이사항
카카오테크 블로그에서 OR연산을 사용하기를 권장하고있다.
'Algorithm > Programmers' 카테고리의 다른 글
[JS][프로그래머스]실패율 (0) | 2021.08.30 |
---|---|
[JS][프로그래머스]3진법 뒤집기 (0) | 2021.08.30 |
[JS][프로그래머스]나누어 떨어지는 숫자 배열 (0) | 2021.08.27 |
[C++][프로그래머스]연습문제_N개의 최소공배수 (0) | 2021.07.05 |
[JS][프로그래머스]연습문제_직사각형 별찍기. (0) | 2021.07.05 |