1. 문제
2. 전략
1) 지도1과 지도2 배열 각각 10진수를 2진수로 변경하여 spread연산자로 펼쳐서 0과 1로 된 배열 생성
2) 생성된 지도1배열과 지도2배열을 비교하여 1이 존재하는 좌표는"#", 두 좌표 모두 0인 경우 0으로 치환
3) 각각의 배열을 array.join('') 으로 연결하여 출력
function solution(n, arr1, arr2) {
var answer = [];
let a1 = [];
let a2 = [];
// 2진수의 a1 배열 생성
for(i in arr1){ //정사각형이므로 arr1, arr2 둘다 같은수 반복으로 사용가능
a1.push([...arr1[i].toString(2)])
a2.push([...arr2[i].toString(2)])
}
//00001 등 앞수가 0이어서 2진수가 1이된 경우 정사각형 길이를 맞추기 위해 0 추가해줌
for(let k = 0; k< a1.length; k++){ //여기도 정사각형이므로 같은 수 반복 사용 가능
while(a1[k].length < a1.length){
a1[k].unshift('0')
}
while(a2[k].length < a2.length){
a2[k].unshift('0')
}
}
// 2차원 배열 순회하며 a1,a2 각 좌표 에 1이 하나 이상 존재하는 경우 a1좌표를 '#'으로 변경
for(let j =0; j<a1.length; j++){
for(let l =0; l<a1.length; l++){
if(a1[j][l] === '1' || a2[j][l] === '1'){
a1[j][l] = '#'
}
else{
a1[j][l] = ' ' //두 좌표 모두 0인 경우 빈칸으로 변경
}
}
}
console.log(a1) //합쳐진 보물지도 좌표 확인
for(p in a1){ //a1 배열을 순회하며 합쳐서 answer 배열에 추가
answer.push(a1[p].join(''))
}
return answer;
}
3. 알아야할 사항
1) array.unshift(a) : 배열의 맨 앞에 a요소를 추가한다.
'ComputerScience > 알고리즘, 프로그래머스' 카테고리의 다른 글
[Lv.1] 다트게임(정규식, string메소드, 조건반복문 혼합) (카카오) (1) | 2023.02.02 |
---|---|
[Lv.1] 푸드 파이트 대회 (String(str).repeat()) (1) | 2023.02.01 |
[Lv.1] 3진법 뒤집기 (1) | 2023.01.31 |
[Lv.1] JS 최대공약수, 최소공배수 구하기 (0) | 2023.01.31 |
[Lv.0] 문자열 내림차순 정렬하기 (array.sort(), array.reverse(), array.join(), Spread 연산자, (0) | 2023.01.31 |
댓글