프로그래머스 #JS - [1차] 비밀지도

SSO·2020년 1월 17일
0

프로그래머스Lv1

목록 보기
37/47

문제

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

풀이

function solution(n, arr1, arr2) {
  var answer = [];
  var temp = [];
  
  for(var i=0; i<n; i++){
    var e1 = arr1[i].toString(2);
    var e2 = arr2[i].toString(2);

    if(e1.length < n) {
      const add = n-e1.length;
      for(var j=0;j<add;j++){
        e1 = '0'+e1;
      }
    }
    if(e2.length < n) {
      const add = n-e2.length;
      for(var j=0;j<add;j++){
        e2 = '0'+e2;
      }
    }
    
    for(var j=0; j<n; j++){
      if((e1[j] === '0')&&(e2[j] === '0')){
        temp[j] = ' '; 
      }else{
        temp[j] = '#';
      }
   } 
    var str = temp.join('');
    answer.push(str);
  }

    return answer;
}
더 생각해보기 1H

  array, string 관련 method사용해서 코드 단순화하기
 오래걸린 부분 : 초기할당값이 var a = []인 배열에 a[i][j]의 형식으로 값을 할당하기 (이번 코드에선 사실 불필요 했는데, 자주 마주치는 문제)

다른 사람의 풀이


//1
function solution(n, arr1, arr2) {
    return arr1.map((i, index) =>('0'.repeat(n) + (i | arr2[index]).toString(2)).slice(-n)).map(i => i.replace(/0/g, ' ').replace(/1/g, '#'));
}
//2
var solution=(n,a,b)=>a.map((a,i)=>(a|b[i]).toString(2).padStart(n,0).replace(/0/g,' ').replace(/1/g,'#'))

참고사항

string method - repeat()
정규식 - replace()
숫자를 이진수로 변환하기 - toString(2)

profile
happy

0개의 댓글