비밀지도
2018 KAKAO BLIND RECRUITMENT
내가 제출한 답안
function solution(n, arr1, arr2) {
var answer = [];
for (let i = 0; i < n; i++) {
let tmp = (arr1[i] | arr2[i]).toString(2).replace(/1/g, '#').replace(/0/g, ' ');
if (tmp.length !== n) {
while (n > tmp.length) {
tmp = ' ' + tmp;
}
}
answer.push(tmp);
}
return answer;
}
나의 풀이
- 반복문(for)를 활용하여 지도의 제일 윗줄부터 마지막 줄까지 탐색한다.
- tmp 분석하기
- 비트연산자(|)와 'toString'을 활용하여 2진법 형태(문자열)로 반환한다.
- replace를 활용하여 '1'을 '#'으로 바꾼다.
- replace를 활용하여 남아있는 '0'을 공백(' ')으로 바꾼다.
- '#'과 공백으로 이루어진 tmp가 n자리만큼 되어있지 않을 경우 n자리가 될 때까지 tmp 앞에 공백을 더해준다.
- 완성된 tmp를 answer에 push하여 보관한다.
자바스크립트 관련 학습내용
자바스크립트에서 비트 연산 OR
- 연산 대상의 값을 내부적으로 2진법으로 전환하여 각 자리마다 1이 있을 경우 1을 반환하여 10진법 형태로 값을 반환한다.
- (0 | 1), (1 | 0), (1 | 1) === 1
- (0 | 0) === 0
- 2진법 전환하여 32자리까지 연산 가능하고, 32자리 초과하면 그 이후로 생략한다.
const x = 7; // 2진법 : 0000111
const y = 11; // 2진법 : 0001011
console.log(x | y); // 2진법 : 0001111
// console 창 결과 : 15
'Algorithm' 카테고리의 다른 글
[프로그래머스] 실패율 with Javascript (0) | 2021.12.21 |
---|---|
[프로그래머스] 다트게임 with Javascript (0) | 2021.12.17 |
[프로그래머스] 상호평가 with JavaScript (0) | 2021.09.18 |
[프로그래머스] 부족한 금액 계산하기 with JavaScript (0) | 2021.09.16 |
[프로그래머스] 다트 게임 with Python (0) | 2021.07.17 |