Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 js
- KDT 프로그래머스
- 모던 자바스크립트 딥다이브
- 우테캠 회고록
- useEffect return
- Frontend Roadmap
- 투포인터알고리즘 js
- 개발자 특강
- 모던 자바스크립트 TIL
- 프로그래머스 K_Digital Training 프론트엔드
- useRef 지역 변수
- 프로그래머스 데브코스 프론트엔드 TIL
- 프로그래머스 데브코스
- 백준 node.js
- react customHook 예시
- 모던 자바스크립트 Deep Dive
- react 프로젝트 리팩토링
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 데브코스 프론트엔드
- Vue3
- 머쓱이
- Vue3 Router
- 인프런 자바스크립트 알고리즘 문제풀이
- 리팩토링 회고
- 모던 javascript Deep Dive
- frontend roadmap study
- TypeScript 문법 소개
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 K_Digital Training
- K_Digital Training
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[프로그래머스 JavaScript] 1차 비밀지도 본문
프로그래머스 Level1 [1]차 비밀지도 -> 2018 KAKA BLIND 문제
문제 설명 : arr1, arr2 두개의 지도가 주어질때 두개의 지도를 합쳐서 빈공간이 있다면 " " 빈 문자
빈공간이 없다면 "#"로 치환하여 출력해야하는 문제이다.
저는 문제접근을 다음과 같이 구상했습니다.
1. 암호화된 두개의 지도를 2진법으로 변환
2. 변환된 두개의 지도값을 더해 전체 지도의에 넣어준다.
위 조건에서 알 수 있듯이 하나라도 겹치면 벽이 되기 때문에 1이상일 것이다.
3. 2번 과정을 거친 전체 지도는 빈공간이 있다면 0 아니면 1이상의 값을 가질 것이다.
4. 전체지도를 탐색하면서 0일 경우 " " 그외에는 "#"으로 변환하여 answer배열에 삽입
function solution(n, arr1, arr2) {
var answer = [];
//전체 지도
let map = Array.from(Array(n), ()=> new Array(n).fill(0));
//두개의 지도를 각각 변환
for(let i=0; i<n; i++){
//2진법으로 변환
let tmp1 = arr1[i].toString(2);
let tmp2 = arr2[i].toString(2);
//5자리로 맞춤 입력길이가 얼마인지 모르므로 최대한 크게..
let str1 = "00000000" + tmp1;
str1 = str1.slice(-n);
let str2 = "00000000" + tmp2;
str2 = str2.slice(-n);
//정수형 배열로 변환
str1 = str1.split("").map((el) => parseInt(el));
str2 = str2.split("").map((el) => parseInt(el));
//두개 지도 값 더해서 전체 지도에 넣기
map[i] = map[i].map((el,idx) => str1[idx]+str2[idx]);
}
//위 과정을 거치고 나면 지도의 공백부분은 0,
//벽인 부분은 1이상의 값이 될 것이다.
//이중 반복문을 통해 비밀지도 해독하여 문자열로 변환
for(let i of map){
let result = ""
for(let j of i){
if(j === 0){
result += " "
}else result += "#"
}
answer.push(result);
}
return answer;
}
코드 설명 : 위의 조건대로 코드를 작성하면된다. 예외적인 경우만 추가적으로 고려해준다.
2진법으로 변환된 문자를 입력으로 주어지는 n의 크기에 맞춰야하므로 해당 로직을 처리하는 부분과
처리하고 난 후 정수형 배열로 바꿔주는 부분만 추가해주면된다.
728x90
'알고리즘_JS > 프로그래머스_Level1' 카테고리의 다른 글
[프로그래머스 JavaScript] 1차 다트게임 (0) | 2021.06.17 |
---|---|
[프로그래머스 JavaScript] 2016년 (0) | 2021.06.09 |
[프로그래머스 JavaScript] 로또의 최고 순위와 최저 순위 (0) | 2021.06.09 |
[프로그래머스 JavaScript] 예산 (0) | 2021.06.08 |
[프로그래머스 JavaScript] 실패율 (0) | 2021.06.07 |
Comments