코딩 테스트/프로그래머스 level1

[1차] 비밀지도

fullfish 2022. 9. 8. 03:32

 

코드

function solution(n, arr1, arr2) {
  let binaryArr1 = [];
  let binaryArr2 = [];
  let sumBinaryArr = [];
  for (let i = 0; i < arr1.length; i++) {
    binaryArr1.push(arr1[i].toString(2));
    binaryArr2.push(arr2[i].toString(2));

    sumBinaryArr.push(
      (parseInt(binaryArr1[i]) + parseInt(binaryArr2[i]))
        .toString()
        .split("")
        .map((ele) => (parseInt(ele) > 0 ? "#" : " "))
        .join("")
        .padStart(n)
    );
  }
  return sumBinaryArr;
}

 

더 좋은 코드

var solution2 = (n, arr1, arr2) =>
  arr1.map((a, i) =>
    (a | arr2[i]).toString(2).padStart(n, 0).replace(/0/g, " ").replace(/1/g, "#")
  );

두개의 배열을 비교하기위해

map의 인자로 index인 i를 만들어서

a와 arr2[i]로 같은 인덱스의 요소를 비교했다

| 는 or로써

a와 arr2[i]를 2진법으로 보았을때 or이다

즉 a가 50 b가 10이라면

각각 2진법으로 표현시

a는 110010

b는 001010이 되므로 

a | b는 111010이된다

 

그리고 정규식 잘 활용하자

'코딩 테스트 > 프로그래머스 level1' 카테고리의 다른 글

문자열 내 마음대로 정렬하기  (0) 2022.09.08
모의고사  (0) 2022.09.08
다트 게임  (0) 2022.09.08
크레인 인형뽑기 게임  (0) 2022.09.08
성격 유형 검사하기  (0) 2022.09.08