본문 바로가기
알고리즘/프로그래머스 문제-JS

[JS] 비밀지도

by sweesweet 2022. 7. 3.

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

 

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

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

programmers.co.kr

1시간 내내 문제를 풀었다. 풀고 해설을 보니 비트연산자라는게있는걸 알게되었고 , 비트연산자를 찾던 중 toString 메소드로 이진법을 표현할 수 있다는 걸 알게되었다. 이렇게 길게 풀 필요가 없다는점...ㅠㅠ\

내일 코드푸는 시간에 이걸 다시 풀어봐야겠다

https://velog.io/@jakeseo_me/2019-04-30-1604-%EC%9E%91%EC%84%B1%EB%90%A8-7qjv3gv9ad

 

자바스크립트 개발자라면 알아야 할 33가지 개념 #12 자바스크립트 비트연산 실제로 활용하기!

들어가기 전에 이 포스팅은 https://codeburst.io/using-javascript-bitwise-operators-in-real-life-f551a731ff5 에 있는 포스팅들을 번역한 것입니다. 오역이나 의역이 있을 수 있습니다. 지적해주시면 확인 후 바로

velog.io

기존코드

function solution(n, arr1, arr2) {
    function recursion(n){
    let result; 
        if(n===1){
            return '#'
        }
        if(n===0){
            return ' '
        }
  
        if(n%2===1){
            n=n-1
            result ='#'
        }else{
            result =' '
        }
    return recursion(n/2)+result
    }
    let result=[]
    for(let i =0; i<n;i++){
        let p =recursion(arr1[i])
        let q = recursion(arr2[i])
        p=p.length<n?' '.repeat(n-p.length)+p:p
        q=q.length<n?' '.repeat(n-q.length)+q:q
        let dd=''
        for(let j =0 ; j<p.length;j++){
           if(q[j]==='#'||p[j]==='#'){
               dd+='#'
           }else{
               dd+=' '
           }
        }
        result.push(dd)
        
        
    }
    return result
}

위의 링크 읽고 개선한 코드

function solution(n, arr1, arr2) {
    let result =[]
    result=arr1.map((el,index)=>{
        let newEl = (el|arr2[index]).toString(2).replace(/1/g,'#').replace(/0/g, ' ')// 동시에 할 방법은 업나...
            return newEl.length<n?' '.repeat(n-newEl.length)+newEl:newEl
        })
    return result
}

다만 저 replace를 동시에 했으면 좋겠는데, 방법을 찾아보니 대체될 str부분에 함수하나 넣어서 확인하던데.. 변수 앞 + 가 대체 무엇인지 모르겠다..ㅠㅠ

'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글

[JS]부족한 금액  (0) 2022.07.06
[JS]최소직사각형  (0) 2022.07.06
[JS]최대공약수와 최소공배수  (0) 2022.06.27
[JS]예산  (0) 2022.06.26
[JS]숫자 문자열과 영단어  (0) 2022.05.31