728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/17681?language=javascript
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
코드
function solution(n, arr1, arr2) { let map1 = []; //arr1의 요소를 2진수로 나타낼 배열 let map2 = []; //arr2의 요소를 2진수로 나타낼 배열 let map = []; //map1 || map2의 결과를 나타낼 배열 (최종 비밀지도) let answer = []; //map의 각 요소를 판단하여 # 혹은 공백으로 나타낼 정답 배열 //arr1의 각 요소인 10진수를 2진수로 변환하고, n개의 길이에 맞춰 부족하면 앞에 0으로 추가 for (let i = 0; i < n; i++) map1.push(arr1[i].toString(2).padStart(n, "0")); for (let i = 0; i < n; i++) map2.push(arr2[i].toString(2).padStart(n, "0")); for (let i = 0; i < n; i++) { let str = ""; for (let j = 0; j < n; j++) { //map1과 map2의 각 요소를 하나하나 비교하여 ||연산자의 결과가 1이면 map배열에 1로 저장하기 if (parseInt(map1[i][j]) || parseInt(map2[i][j]) === 1) str = str + "1"; else str = str + "0"; } map.push(str); } for (let i = 0; i < n; i++) { let str = ""; for (let j = 0; j < n; j++) { //map 배열을 모두 돌며 1 -> #, 0 -> ' ' 으로 바꿔주기 map[i][j] === "1" ? (str = str + map[i][j].replace("1", "#")) : (str = str + map[i][j].replace("0", " ")); } answer.push(str); } return answer; }
후기
- 다른 분들의 풀이를 보니 나 혼자만 하드코딩했나보다.. 하하 한줄풀이를 보고는 역시 난 멀었구나를 또 한 번 느꼈다 😂
- 그래도 내 풀이의 핵심을 꼽자면, 논리연산자 ||의 이해와 padStart() 함수의 이해 정도인 것 같다
잘못된 내용이나 수정이 필요한 내용이 있으면 언제든 댓글 달아주세요 감사합니다 😀
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 메뉴 리뉴얼 / JavaScript (0) | 2022.06.28 |
---|---|
[Programmers] 멀쩡한 사각형 / JavaScript (0) | 2022.06.28 |
[Programmers] 신고 결과 받기 / JavaScript (0) | 2022.02.10 |
[Programmers] 소수 찾기 / JavaScript (0) | 2022.02.09 |
[Programmers] 숫자의 표현 / JavaScript (0) | 2022.02.07 |