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() 함수의 이해 정도인 것 같다 
잘못된 내용이나 수정이 필요한 내용이 있으면 언제든 댓글 달아주세요 감사합니다 😀

+ Recent posts