코딩테스트

[코딩테스트] 2018 카카오 블라인드 테스트 - [1차]비밀지도 (Javascript)

보오 2021. 11. 27. 12:01

문제 보러 가기:

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

 

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

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

programmers.co.kr


나의 풀이:

https://programmers.co.kr/learn/courses/30/lessons/17681/solution_groups?language=javascript&type=my 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

(1) 각 array의 숫자들을 이진법으로 만들어준다.
(2) 위 과정에서 얻은 두 개 배열을 돌며 각 원소의 글자가 1일 경우 "#"을 넣어주고, 아니면 " "을 넣어준다.

코드로 풀어보자면

(1) 각 aaray의 숫자들을 이진법으로 만들기

arr1.forEach((s)=>{
    var binary = s.toString(2);
    while(binary.length < n){
    binary = '0' + binary;  
    }
    map1.push(binary);
})

(2) 두 개 배열을 돌며 각 원소 글자가 1일 경우 "#", 아니면 " " 넣어주기

for(var i=0;i<n;i++){
    var tmpS = '';
    for(var j=0;j<n;j++){
    if(map1[i][j] === '1' || map2[i][j] === '1') tmpS += '#';
    else tmpS += " ";
    }
    answer.push(tmpS);
}

(3) 최종 코드

function solution(n, arr1, arr2) {
    var answer = [];
    var map1 = [], map2 = [];
    arr1.forEach((s)=>{
        var binary = s.toString(2);
        while(binary.length < n){
          binary = '0' + binary;  
        }
        map1.push(binary);
    })
    arr2.forEach((s)=>{
        var binary = s.toString(2);
        while(binary.length < n){
          binary = '0' + binary;  
        }
        map2.push(binary);
    })
    for(var i=0;i<n;i++){
        var tmpS = '';
        for(var j=0;j<n;j++){
            if(map1[i][j] === '1' || map2[i][j] === '1') tmpS += '#';
            else tmpS += " ";
        }
        answer.push(tmpS);
    }
    return answer;
}