출처 - https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
나의 풀이
function solution(n, arr1, arr2) {
var answer = [];
//arr 을 만들고 수에 해당하는 1을 만들어 1 또는 2 로만들어줌 , 만약 1 이상이라면 맵을 이용해 공백 또는 # 으로 바꿔준다.
var toStr1 = [];
var toStr2 = [];
var str1 =[];
var str2 = [];
var arr = Array(n).fill(0)
for(let i = 0 ; i < arr1.length; i ++){
let update = arr1[i].toString(2).padStart( n ,'0')
toStr1.push(update)
}
for(let i = 0 ; i < arr2.length; i ++){
let update = arr2[i].toString(2).padStart( n ,'0')
toStr2.push(update)
}
for(let i = 0; i < toStr1.length; i ++){
str1.push(toStr1[i].split("").map(a=> a == "1"? a = "#" : " "))
}
for(let i = 0; i <toStr2.length; i ++){
str2.push(toStr2[i].split("").map(a=> a == "1"? a = "#" : " "))
}
for(let i = 0; i<str1.length; i ++){
for(let j = 0; j<str1[i].length; j ++){
if(str1[i][j] == "#" || str2[i][j] == "#" ){
if(str1[i][j] == "#"){
str1[i][j] =="#"
}else{
str1[i][j] += "#"
}
}
}
}
for(let i = 0 ; i <str1.length; i++){
for(let j = 0; j<str1[i].length; j ++){
str1[i][j] == " #" ? str1[i][j] = "#" : str1[i][j]
}
answer.push(str1[i].join(""))
}
return answer;
}
진짜 그냥 뇌빼고 하드코딩을 했다... 반복문만 몇개를 ... 분명 쉬울거라 생각했는데...어려웠다.
클린코딩
function solution(n, arr1, arr2) {
// 주어진 배열을 2진수 문자열로 변환하고 앞에 0을 채우는 함수
const toBinaryString = (num) => num.toString(2).padStart(n, '0');
// 2개의 배열을 2진수 문자열로 변환하여 병합
const binaryArr1 = arr1.map(toBinaryString);
const binaryArr2 = arr2.map(toBinaryString);
// 두 배열을 OR 연산한 후, 1은 #, 0은 공백으로 변환
const mergedArr = binaryArr1.map((bin1, i) =>
bin1.split('').map((bit, j) =>
(bit === '1' || binaryArr2[i][j] === '1') ? '#' : ' '
).join('')
);
return mergedArr;
}
// 예제 사용법
const n = 5;
const arr1 = [9, 20, 28, 18, 11];
const arr2 = [30, 1, 21, 17, 28];
console.log(solution(n, arr1, arr2));
// ["#####", "# # #", "### #", "# ##", "#####"]
'알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스LV.1 - 대충 만든 자판(JS) (0) | 2024.06.19 |
---|---|
[알고리즘] 프로그래머스 LV.1 - 모의고사(JS) (1) | 2024.06.13 |
[알고리즘] 프로그래머스LV.0 -주사위게임3 (JS) (0) | 2024.06.06 |
[BOJ] 2581번 - 소수(JS) (0) | 2024.05.28 |
[BOJ]2292번 - 벌집(JS) (0) | 2024.05.26 |