[프로그래머스] Lv.1 [1차]비밀지도

Miro·2022년 8월 20일
0
post-thumbnail

프로그래머스 Lv.1 [1차] 비밀지도

문제



입출력 형식, 예제


나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function solution(n, arr1, arr2) {
    let answer = [];
    let arr = [];
    
    // arr1, arr2 정사각형 변의 길이에 맞게 이진수 변경
    for(let i = 0; i < arr1.length; i++) {
        arr1[i] = arr1[i].toString(2);
        arr2[i] = arr2[i].toString(2);
        for(let j = 0; j < arr1.length; j++) {
            if(arr1[i].length < n) arr1[i] = `0${arr1[i]}`;
            if(arr2[i].length < n) arr2[i] = `0${arr2[i]}`;
        }
    }
    
    // 지도 완성 시키기
    for(let i = 0; i < arr1.length; i++) {
        let a = [];
        for(let j = 0; j < arr1[i].length; j++) {
            if(arr1[i][j] === "1" || arr2[i][j] === "1") {
                a.push('#');
            } else a.push(' ');
        }
        arr.push(a.join(''));
    }
    
    return arr;
}
cs

먼저 arr1arr2를 정사각형 변의 길이에 맞게 2진수로 변환해준다.

이중 반복문을 사용하여 바깥쪽 반복문은 i가 0부터 arr1의 길이까지 반복하고, 안쪽 반복문은 j가 0부터 arr1의 길이까지 반복한다.

바깥쪽 반복문에서 arr1[i]arr2[i]를 2진법으로 변환한다.

안쪽 반복문에서 arr1[i]arr2[i]의 길이가 n보다 작으면 앞에 0을 붙여준다.

2진수 변환된 arr1arr2를 이용하여 지도를 완성 시킨다.

이중 반복문을 사용하여 바깥쪽 반복문은 i가 0부터 arr1의 길이까지 반복하고, 안쪽 반복문은 j가 0부터 arr1[i]의 길이까지 반복한다.

바깥쪽 반복문에서 a라는 빈 배열을 하나 선언한다.

안쪽 반복문에서 만약 arr1[i][j]가 1이거나 arr2[i][j]가 1이라면 빈 배열 a에 #을 push 해준다.
둘 다 0이라면 빈 배열 a에 빈 칸을 push 해준다.

다시 바깥쪽 반복문에서 #과 빈 칸으로 채워진 배열 ajoin을 사용하여 문자열로 변환한다.
이 문자열을 빈 배열 arrpush 해준다.

마지막으로 완성된 비밀지도 arr을 return 한다.

profile
프론트엔드 개발자(진)

0개의 댓글