개발 공부/알고리즘 문제 풀이

[프로그래머스] [1차] 비밀지도 (JavaScript)

종범2 2020. 6. 2. 21:46

문제

프로그래머스 2018 KAKAO BLIND RECRUITMENT 비밀지도

 

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

 

언어

자바스크립트(JavaScript)

 

접근 방법

  1. Input을 2진수로 변환하고 왼쪽에 빈 부분은 0으로 채운다.
  2. 겹쳤을 때 1인 부분은 #, 0인 부분은 공백으로 둔다.

코드

function solution(n, arr1, arr2) {
    var answer = [];
    let newArr1 = [];
    let newArr2 = []
    // 2진수로 변환하며 빈 부분은 0으로 채움
    for (let i=0; i<n; i++){
        let tempArr1 = [];
        let str1 = arr1[i].toString(2);
        for (let j=0; j<n-str1.length; j++){
            tempArr1.push(0);
        }
        for (let j=0; j<str1.length; j++){
            tempArr1.push(str1[j]);
        }
        newArr1.push(tempArr1);
        let tempArr2 = [];
        let str2 = arr2[i].toString(2);
        for (let j=0; j<n-str2.length; j++){
            tempArr2.push(0);
        }
        for (let j=0; j<str2.length; j++){
            tempArr2.push(str2[j]);
        }
        newArr2.push(tempArr2);
    }
    // 겹쳤을 때 1인 부분은 # 0인 부분은 공백으로 둠
    for (let i=0; i<n; i++){
        let str = ''
        for (let j=0; j<n; j++){
            if(newArr1[i][j] === '1' || newArr2[i][j] === '1'){
                str+='#';
            }else{
                str+=' ';
            }
        }
        answer.push(str);
    }
    console.log(newArr1, newArr2, answer);
    return answer;
}

 

복기

  1. 어렵지 않게 풀었다.
  2. 2진수로 변환하는 코드는 짜지 않고 toString을 이용한다.