[프로그래머스 Lv.1] 비밀지도

Jetom·2023년 3월 27일
0
post-thumbnail

👉 문제 풀러가기 : https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=javascript


😎 문제

너무 길어서 생략..


🥴 문제풀이

function solution(n, arr1, arr2) {
  //최종적으로 예쁘게 담을 배열
    let result = [];

    for (let i = 0; i < n; i++) {
      //||만 썼다가 |를 처음 보는데 둘 중 하나라도 1이면 1을 반환한다
      //'11111'
	  //'10101'
	  //'11101'
	  //'10011'
	  //'11111'
      const binary = (arr1[i] | arr2[i]).toString(2);
      
      //만약 "1011"이면 5로 맞춰야하니까 "01011"로 만들기 위한 로직이다. + binary를 꼭 해줘야 문자열이 이어짐
      const paddedBinary = '0'.repeat(n - binary.length) + binary;
      
      //paddedBinary에서 1을 "#"으로 바꾸고 0을 " "으로 바꾸는 작업을 하는 과정
      const line = paddedBinary.replace(/1/g, '#').replace(/0/g, ' ');
        
       //작업이 끝난 line을 result 배열에 담아주면 원하는 로직이 끝이난다!
       result.push(line);
    }

    return result;
}

console.log(solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28])) //["#####","# # #", "### #", "# ##", "#####"]

비트 연산자인 |이 되게 신기했다. 뭔가 기초가 부족해서 결국엔 답을 본것 같은데, 꼭 잊지않고 활용해야겠다 :)

profile
사람이 좋은 인간 리트리버 신혜리입니다🐶

0개의 댓글