메소드를 많이 알아두면 좋은 점: 비밀지도🗺

9rganizedChaos·2021년 1월 28일
0
post-thumbnail

비밀지도 문제

프로그래머스 비밀지도 문제

나의 풀이

처음에 이 문제를 아래와 같이 풀었다...

function solution(n, arr1, arr2) {
    
    function makeN(str, n){
        if(str.length === n){
            return str
        } else {
            str = 0 + str;
            return makeN(str, n)
        }
    }
    
    function wallAndSpace(str){
        let result = ''
        for(let i = 0; i < str.length; i++){
            if(str[i] === '0'){
                result = result + ' '
            } else if (str[i] === '1'){
                result = result + '#'
            }
        }
        return result;
    }
    
    let secretMap = []
    for(let i = 0; i < arr1.length; i++){
        let secretRow = ""
        let map1 = makeN(arr1[i].toString(2), n).split('')
        let map2 = makeN(arr2[i].toString(2), n).split('')
        for(let j = 0; j < map1.length; j++){
            secretRow = secretRow + (+map1[j] || +map2[j])
        }
        secretMap.push(secretRow)
    }
    return secretMap.map(n => wallAndSpace(n))
}

코딩을 시작한 내 입장에서 스스로 함수를 만들어서 쓴 것과 toString(n)을 통해 n진법을 구현한 것만으로도 뿌듯했으나... 이번에도 역시 다른 사람의 풀이를 보고 있으니, 현타가 씨게 온다...

다른 사람의 풀이

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

이런저런 메소드를 사용하니 위와 같이 한 줄로 풀 수 있는 것이었다...
문제에 활용될 수 있는 메소드를 간략하게 복붙하며 눈물로 포스팅을 마친다...

String.prototype.repeat()

'abc'.repeat(1);    // 'abc'
'abc'.repeat(2);    // 'abcabc'

String.prototype.padStart()

const str1 = '5';

console.log(str1.padStart(2, '0'));
// expected output: "05"

비트연산자

알고 있었지만 활용방법을 몰라 이용하지 못했었는데, 이번에 다른 사람들의 풀이를 보며 확실히 알게 되었다.

이진수로 바꿔주고 연산을 써야하는 줄 알았는데, 10진수 인 상태로 사용해주면, 알아서 이진수 비트연산을 하고 다시 결과를 십진수로 변환해서 출력해주는 것이었다...

String.prototype.replace()

const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';

const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"
profile
부정확한 정보나 잘못된 정보는 댓글로 알려주시면 빠르게 수정토록 하겠습니다, 감사합니다!

0개의 댓글

관련 채용 정보