티스토리 뷰
728x90
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/17681
십진수 -> 이진수
var dec = 123;
var bin = dec.toString(2); // === "1111011"
이진수 -> 십진수
var bin = "1111011";
var dec = parseInt(bin, 2); // === "123"
알고보니 자바스크립트에 내장함수를 사용해 십진수와 이진수를 변환할 수 있었다!
알아두면 편할 것 같다!
내가 짠 코드
function solution(n, arr1, arr2) {
var arr1_binary = [];
var arr2_binary = [];
var answer = [];
for(let j=0 ; j<arr1.length ; j++) {
var temp1=[];
var temp2=[];
for(let i=0 ; i<n ; i++) {
if(arr1[j]===0) {
temp1.unshift(0);
} else {
temp1.unshift(arr1[j]%2);
arr1[j] = parseInt(arr1[j] / 2);
}
if(arr2[j]===0) {
temp2.unshift(0);
} else {
temp2.unshift(arr2[j]%2);
arr2[j] = parseInt(arr2[j] / 2);
}
}
arr1_binary.push(temp1);
arr2_binary.push(temp2);
}
for(let i=0 ; i<arr1_binary.length ; i++) {
var temp = []
for(let j=0 ; j<arr1_binary[i].length ; j++) {
if(arr1_binary[i][j] === 1 || arr2_binary[i][j] === 1) temp.push("#");
else temp.push(" ");
}
answer.push(temp.join(""));
}
return answer;
}
처음 for문을 통해 이진수로 일일이 변환해주고 빈 공간엔 0을 넣어주었다.
내장함수를 사용하면 편할뻔했다..!
그리고 두번쨰 for문에서 두 arr로부터 최종 암호를 구해 답을 구했다
좀 많이 비효율적이고 지저분한 코드이다..
제출 후 참고한 코드
function solution(n, arr1, arr2) {
var answer = [];
let c;
for(let i =0;i<n;i++){
c = (arr1[i]|arr2[i]).toString(2).replace(/1/g,"#").replace(/0/g," ");
while(c.length != n) {
c = " " + c;
}
answer.push(c);
}
return answer;
}
다양한 코드들이 있었지만 이 코드가 이해하기 쉽게 잘 정리된 것 같았다.
(arr1[i]|arr2[i]).toString(2) 을 통해 arr1과 arr2의 배열을 한번에 이진수로 정리하고, replace 함수를 사용해서 1은 #으로, 0은 공백으로 대체하였다.
그리고 사이즈만큼 결과에 공백을 더해주었다.
다음부터 같은 답을 내더라도 더 효율적인 코드를 짜려고 노력해야겠다.
toString!!! replace!!!
728x90
'programmers. Level1' 카테고리의 다른 글
javascript - 3진법 뒤집기 (0) | 2021.11.03 |
---|---|
javascript - 폰켓몬 (0) | 2021.11.03 |
javascript - 모의고사 (0) | 2021.11.01 |
javascript - 소수 만들기 (0) | 2021.10.28 |
javascript - 예산 (0) | 2021.10.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- TypeScript
- 자바스크립트
- 소프티어
- dfs
- level3
- css
- JavaScript
- 이진탐색
- React
- React.FC
- CORS
- 노마드코더
- 이코테
- 이것이코딩테스트다
- CS
- 면접을 위한 CS 전공지식 노트
- nomadcoder
- 파이썬
- 상태관리
- level1
- 기초
- reactjs
- springboot
- redux
- 이것이 취업을 위한 코딩테스트다
- axios
- Hook
- programmers
- html
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함