-
[자바스크립트] 프로그래머스 Lv.1 [1차] 보물지도[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 31. 03:59
let answer = [] let rowLength = Math.max(...arr1,...arr2).toString(2).split('').length arr1 = arr1.map((rows) => rows.toString(2).split('')) arr2 = arr2.map((rows) => rows.toString(2).split('')) for (i=0; i<arr1.length; i++) { if (arr1[i].length < rowLength) { arr1[i].unshift(...'0'.repeat((rowLength - arr1[i].length)).split('')) } if (arr2[i].length < rowLength) { arr2[i].unshift(...'0'.repeat(rowLength - arr2[i].length).split('')) } answer.push(arr1[i].map((blocks, j) => { blocks = blocks*1 + arr2[i][j]*1; return blocks > 0 ? '#' : ' ' } ).join('')) }
1) 보물지도의 폭(↔)기준을 먼저 잡았다 -> 맨앞이 0 이면 자릿수가 사라지는 문제때문
2) arr1과 arr2에 담긴 숫자를 각각 2진수로 변환 후 한 글자씩 쪼갠 배열로 만들어주었다.
3) 보물지도의 높이(배열의 길이) 만큼 반복문을 돌렸다.
4) 우선 arr1 과 arr2에서 자릿수가 줄어든 아이들은 앞에 0을 unshift로 쫑쫑 넣어주었다.
5) 한 줄씩 arr1[ i ][ j ] + arr1[ i ][ j ] 해주고, 0일 때는 공백으로, 1이나 2일때는 #으로 바꿔주고 join
6) 짜잔 해결되었습니다! ... 3점받았다.
원래는 비트연산으로 푸는 문제라고 한다.
...? 그게 뭘까? 공부해봐야겠다.
https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
'[TIL] 카테고리 > 알고리즘 문제풀기' 카테고리의 다른 글
[자바스크립트] 프로그래머스 Lv.1 크레인 인형뽑기 게임 (0) 2022.06.01 [자바스크립트] 프로그래머스 Lv.1 [1차]다트게임 (0) 2022.06.01 [자바스크립트] 프로그래머스 Lv.1 폰켓몬 (0) 2022.05.30 [자바스크립트] 프로그래머스 Lv.1 체육복 (0) 2022.05.29 [자바스크립트] 프로그래머스 Lv.1 실패율 (0) 2022.05.27