[프로그래머스 level1] 비밀지도_카카오 신입공채

김예지·2021년 10월 15일
1

문제

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


문제 풀이

코드1

function solution(n, arr1, arr2) {
    let answer=[]; //# 넣을 배열 
    arr1=arr1.map(v => v=v.toString(2).padStart(n, '0')); 
    arr2=arr2.map(v => v=v.toString(2).padStart(n, '0'));
    
    for(let i=0; i<n; i++){
        let tmp='';
        for(let j=0; j<n; j++){
            tmp+= (arr1[i][j]==='1'||arr2[i][j]==='1')? '#':' ';
        }
        answer.push(tmp);
    }
    return answer;
}

처음에 비트연산을 생각못하고 말도 안되는 방식으로 풀었다... 한시간동안 풀었지만 결국 너무 복잡한 방법으로 풀어서 실행시간도 오래걸리고 테케 모두를 통과하지 못했다.
결국 카카오 해설페이지를 보게되었는데, 비트연산자 를 사용하는 문제로, 정답율 80%를 넘은 문제였다. 이럴때마다 현타오긴 하지만, 난 아직 시험치는게 아니니까 괜찮다며, 계속해서 나아질거라며 나를 위로했다🥲

코드2

function solution(n, arr1, arr2) {
    return arr1.map((v, i) => addZero(n, (v | arr2[i]).toString(2)).replace(/1|0/g, a => +a ? '#' : ' '));
}

const addZero = (n, s) => {
    return '0'.repeat(n - s.length) + s;
}

정규표현식을 활용한 풀이이다. 차근차근 뜯어보자! 나도 정규표현식 잘 다룰날이 오겠지?


이론


참고

카카오 해설:
https://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/

2진법 자릿수 채우기:
https://chinsun9.github.io/2020/11/17/js-%EC%9D%B4%EC%A7%84%EC%88%98-%EC%95%9E%EC%97%90-0%EB%84%A3%EA%B8%B0/

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 26일

10/26
Number화하면 앞에 채워넣은 0없어지니까 주의하기! (number화 하면 안됨)

답글 달기