2018 KAKAO BLIND RECRUITMENT - 비밀 지도

hwakyungChoi·2020년 9월 1일
0
post-thumbnail
post-custom-banner

주어진 2개의 1차원 배열의 10진수를 2진수로 변환하여 2개의 2차원 배열 반복과 비교를 통해서 하나의 1차원 배열을 반환하는 것이 목표인 문제입니다.
2진수로 변환했을 때, "1"이면 벽 부분, "0"이면 공간이고 2개의 지도를 비교하여 하나의 지도라도 같은 위치에 "1"이 있으면 "#"처리하고 둘 다 빈 공간이면 " " (공백) 처리를 해줍니다.

function solution(n, arr1, arr2) {
    var answer = [];
    let firstMap = [],secondMap = [] //비교할 지도 배열 생성
    
    for (var index = 0; index < arr1.length; index++){
    //10진수 값을 2진수로 변환
        var first = arr1[index].toString(2).split("")
        var second = arr2[index].toString(2).split("")
    
    //만약 변환한 값이 한 변의 길이보다 작으면
        if (first.length < n){
            //반복문을 위해서 차이나는 길이만큼 "0"을 추가로 넘어줌 
            var loops = n-first.length
            for(var loop = 0; loop < loops; loop++){
                first.unshift("0")
            }
        }
         if (second.length < n){
            var loops = n-second.length
            for(var loop = 0; loop < loops; loop++){
                second.unshift("0")
            }
        }
        //각 값을 지도 배열에 넣러줌
        firstMap.push(first)
        secondMap.push(second)
     
    }
    // 지도 배열에서 벽과 공간을 확인할 반복문 작성
    for (var index= 0; index < n; index++){
        var row = ""
        for(var index2 = 0; index2 < n; index2++){
        //만약 벽이면 "#"문자열에 추가
            if(firstMap[index][index2] === "1" || secondMap[index][index2] === "1" ){
                row += "#"
            } //벽이 아닌 공간이면 공백을 문자열에 추가
            else if(firstMap[index][index2] === "0" || secondMap[index][index2] === "0" ){
                
                row += " "
            } 
        }
        answer.push(row)
    }
    
    
    //값 반환
    return answer;
}
post-custom-banner

0개의 댓글