문제 링크
풀이
function solution(n, arr1, arr2){
let map1 = arr1;
let map2 = arr2;
let answer = [];
// 이진수 변환 후, n에 맞춰서 앞에 0을 채워서 반환
map1 = map1.map((num) => num.toString(2).padStart(n,"0"));
map2 = map2.map((num) => num.toString(2).padStart(n,"0"));
// n개의 행 연산
for(let i = 0; i < n; i++){
let line = "";
let [map1Index, map2Index] = [map1[i], map2[i]]
// 각 행의 지도값 비교
for(let j = 0; j < n; j++){
if(map1Index[j] === "1" || map2Index[j] ==="1") line+="#";
else line +=" ";
}
answer.push(line);
}
return answer;
}
console.log(5,[9, 20, 28, 18, 11],[30, 1, 21, 17, 28])
문제 조건 분석
- 한변 길이가 n인 정사각형 지도
- 지도 각 칸은 공백(” “)과 벽(”#”)으로 이루어져 있음
- 하나라도 벽이면 전체 지도에서도 벽 → 지도1(벽) OR 지도2(벽)
- 지도의 각 행은 정수 배열로 주어지는데, 이진수 변환시 공백은 0, 벽은 1
풀이 과정
- map1, map2에서 각 줄을 이진수 배열을 만듭니다. toString 메서드를 이용해 이진수로 변환했는데, n의 길이를 맞추기 위해 부족한 길이만큼 앞에 0을 추가했습니다.
- 2진수 변환 : 숫자.toString(진수)
- 문자열 앞에 문자 넣기: 문자열.padStart(총길이, 채울문자)
- 각 행을 의미하는 line 변수를 만들고 n행을 순환합니다. map1과 map2를 비교해 둘 중 하나라도 1이 있으면 #을 추가하고, 그 외에는 공백을 추가합니다.
- 해당 값을 answer 배열에 넣습니다.
'코딩테스트 문제풀이 > programmers' 카테고리의 다른 글
프로그래머스 node.js - 신규 아이디 추천 (0) | 2024.06.07 |
---|---|
프로그래머스 node.js - 성격 유형 검사하기 (1) | 2024.06.06 |
프로그래머스 node.js - 키패드 누르기 (0) | 2024.06.05 |
프로그래머스 node.js - 실패율 (0) | 2024.05.29 |
프로그래머스 node.js - 숫자 문자열과 영단어 (0) | 2024.05.27 |