-
[프로그래머스 Level 1] [1차] 비밀지도 (JavaScript)Coding Test/JavaScript 2024. 11. 25. 16:30
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/17681
입출력 예
매개변수 값 n 5 arr1 [9, 20, 28, 18, 11] arr2 [30, 1, 21, 17, 28] 출력 ["#####", "# # #", "### #", "# ##", "#####" 매개변수 값 n 6 arr1 [46, 33, 33, 21, 31, 50] arr2 [27, 56, 19, 14, 14, 10] 출력 ["######", "### #", "## ##", " #### ", " #####", "### # " 풀이
function solution(n, arr1, arr2) { const answer = []; const A = arr1.map((num) => num.toString(2).padStart(n, 0)); const B = arr2.map((num) => num.toString(2).padStart(n, 0)); const combineArrays = (A, B) => { return A.map((row, i) => { return row.split('').map((char, j) => { const sum = parseInt(char) + parseInt(B[i][j]); return sum > 0 ? '#' : ' '; }).join(''); }); } answer.push(...combineArrays(A, B)); return answer; }
함수 function에는 매개변수로 n (지도의 크기), arr1, arr2 (두 개의 정수 배열)이 주어진다.
answer는 최종적으로 완성된 지도를 저장할 배열을 저장한다.
먼저 arr1과 arr2의 숫자를 2진수 문자열로 변환한 뒤, 지도 크기 n에 맞춰 자리수를 채운다.
여기서 num.toString(2)는 숫자를 2진수 문자열로 변환하고,
.padStart(n, 0)을 통해 2진수 문자열이 n자리보다 짧을 경우 앞쪽에 0을 추가해 길이를 맞춘다.
그 다음, 두 배열을 병합해 지도를 완성시킨다.
A.map을 통하여 배열 A를 순회하면서 각 요소를 처리하고, i는 현재 행(row) 인덱스를 나타낸다.
이후 각 행을 병합하는데,
row.split('')을 통해 2진수 문자열을 한 글자씩 배열로 만들고,
.map((char, j))을 통해 각 글자를 순회하며 B와 같은 위치 B[i][j]와 병합한다.
이후 paresInt(char)와 B[i][j]를 더한 값이 0보다 크면 "#"을 표시하고 그렇지 않으면 " "을 반환한다.
이후 각 행을 다시 문자열로 합쳐서 완성된 지도를 반환한다.
마지막으로, combineArrays(A, B)를 통해 함수의 결과를 answer에 저장하고 return한다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 추억 점수 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 명예의 전당 (1) (JavaScript) (0) 2024.11.25 [프로그래머스 Level 2] 멀리 뛰기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 귤 고르기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 숫자의 표현 (JavaScript) (0) 2024.11.24