min

프로그래머스 비밀지도 자바스크립트 본문

알고리즘

프로그래머스 비밀지도 자바스크립트

minprogramming 2023. 8. 19. 06:43

<문제>

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

 

프로그래머스

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

programmers.co.kr

<나의 풀이>

//n만큼 반복문을 돌면서 다음 과정을 수행한다.
//arr1 , arr2의 각 원소들을 이진수로 변환해준다.
//n만큼 반복문을 돌면서 다음 과정을 수행한다.
//각 이진수의 숫자들을 or연산자를 통해서 연산한다.
//연산결과 즉 0 => " " , 1 => "#"를 임의의 변수에 담는다.
//변수를 answer에 각각 담는다.
//answer를 리턴한다.

function solution(n, arr1, arr2) {
    var answer = [];
    for(let i = 0; i < n; i++) {
        let ans = ""
        for(let j = 0; j < n; j++) {
            let num1 = arr1[i].toString(2).padStart(n , 0)
            let num2 = arr2[i].toString(2).padStart(n , 0)
            if(num1[j] | num2[j]) ans += "#"
            else ans += " "
        }
        answer.push(ans)
    }
    return answer;
}

 

<다른 사람의 풀이>

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;
}

 

<참고자료>

padStart

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

 

String.prototype.padStart() - JavaScript | MDN

padStart() 메서드는 현재 문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환합니다. 채워넣기는 대상 문자열의 시작(좌측)부터 적용됩니다.

developer.mozilla.org