한 걸음씩
[프로그래머스][JS] [1차] 비밀지도 본문
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(n, arr1, arr2) {
let biArr1 = []
let biArr2 = []
// 전부 이진수로 변경하는데 길이를 n으로 맞춰야함(padStart)
for (let i = 0; i < arr1.length; i++){
const bi1 = arr1[i].toString(2)
const bi2 = arr2[i].toString(2)
biArr1.push(bi1.padStart(n, '0'))
biArr2.push(bi2.padStart(n, '0'))
}
// console.log(biArr1, biArr2)
let total = []
for (let i = 0; i < biArr1.length; i++){
// 배열의 요소를 쪼개서 계산할 수 있도록!
const arr1 = biArr1[i].split('')
const arr2 = biArr2[i].split('')
// console.log(arr1, arr2)
// '1'과 '0'을 공백이나 '#'으로 바꾸기
let binary = []
for (let j = 0; j < arr1.length; j++){
if (arr1[j] === '1' || arr2[j] === '1'){ // 둘 중 하나라도 '1'이면 '#'
binary.push('#')
}else if (arr1[j] === '0' && arr2[j] === '0'){ // 둘 다 '0'이면 공백
binary.push(' ')
}
}
total.push(binary.join('')) // 배열을 문자열로 만들어서 total배열에 push
// console.log(binary)
}
// console.log(total)
return total;
}
입력값 〉 6, [46, 33, 33, 22, 31, 50], [27, 56, 19, 14, 14, 10]
console.log(biArr1, biArr2)
biArr1 = [ '01001', '10100', '11100', '10010', '01011' ]
biArr1 = [ '11110', '00001', '10101', '10001', '11100' ]
console.log(arr1, arr2)
[ '1', '0', '1', '1', '1', '0' ] [ '0', '1', '1', '0', '1', '1' ]
[ '1', '0', '0', '0', '0', '1' ] [ '1', '1', '1', '0', '0', '0' ]
[ '1', '0', '0', '0', '0', '1' ] [ '0', '1', '0', '0', '1', '1' ]
[ '0', '1', '0', '1', '1', '0' ] [ '0', '0', '1', '1', '1', '0' ]
[ '0', '1', '1', '1', '1', '1' ] [ '0', '0', '1', '1', '1', '0' ]
[ '1', '1', '0', '0', '1', '0' ] [ '0', '0', '1', '0', '1', '0' ]
console.log(binary)
[ '#', '#', '#', '#', '#', '#' ]
[ '#', '#', '#', ' ', ' ', '#' ]
[ '#', '#', ' ', ' ', '#', '#' ]
[ ' ', '#', '#', '#', '#', ' ' ]
[ ' ', '#', '#', '#', '#', '#' ]
[ '#', '#', '#', ' ', '#', ' ' ]
console.log(total)
[ '######', '### #', '## ##', ' #### ', ' #####', '### # ' ]
리뷰
처음 이진수로 만드는 과정에서 자릿수를 맞춰야 하는데 이 부분을 내가 임의로 5로 설정하고 남는 부분을 0으로 채웠더니 계속 두 번째 테스트 통과를 못했는데, 6으로 바꾸니까 첫 번째 테스트를 통과를 못해서 뭘 고쳐야 둘 다 통과하는 거지 한참 고민을 했다.
알고 보니까 인수로 n을 받았고 문제에서 '한 변의 길이가 n'이라고 했는데 내가 이진수로 바꾸고 '#'과 공백으로 변환하는 과정에만 집중하느라 놓쳐서 보지 못한 부분이었다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 캐릭터의 좌표 (0) | 2023.07.20 |
---|---|
[프로그래머스][JS] 안전지대 (0) | 2023.07.19 |
[프로그래머스][JS] 기사단원의 무기✅ (0) | 2023.07.18 |
[프로그래머스][JS] 덧칠하기 (0) | 2023.07.18 |
[프로그래머스][JS] 겹치는 선분의 길이 (0) | 2023.07.17 |