이진법 관련 알고리즘 문제를 풀다가 알게 되었다. 하나의 줄만 사용하여 이진법 관련한 계산을 간단하게 할 수 있다.
single vertical bar ('|') 란?
: 각 수를 이진법으로 변환한 후 각 자리를 1 또는 0으로 합한 후 결괏값에 대한 십진법 수를 반환한다.
single vertical bar를 사용할 때와 사용하지 않을 때 어떤 차이가 있는지 알아보자.
single vertical bar 없이 구현하기
const number1 = 21;
const number2 = 28;
number1.toString(2); // '10101'
number2.toString(2); // '11100'
이진법으로 변환하면 각각 10101, 11100이다. 그리고 이 두 이진법의 각 자리를 비교하여 1이 있는 경우엔 1로, 1이 없는 경우엔 0으로 합한다. 그러면 '11101'이 되고 다시 십진법으로 변환하면 29이다.
이 과정을 단순히 반복문으로 구현하면(이진법의 길이가 무조건 같다고 가정하는 경우)
const number1 = 21;
const number2 = 28;
//이진법으로 변환한다.
const number1Binary = number1.toString(2);
const number2Binary = number2.toString(2);
//자리 합을 담을 변수를 만든다.
let sumBinary = '';
//반복문을 돌면서 비교하며 1이 있는 경우엔 1을, 아닌 경우엔 0을 더한다.
for(let i = 0; i<number1Binary.length; i++){
if(number1Binary[i] === '1' || number2Binary[i] === '1'){
sumBinary += '1';
} else{
sumBinary += '0';
}
}
console.log(sumBinary); //'11101'
console.log(parseInt(sumBinary, 2)) // 29
이렇게 구현할 수 있다. 이러한 과정을 단축시킬 수 있는 것이 바로 single vertical bar ('|')이다.
single vertical bar로 구현하기
console.log(21 | 28); // 29
수상할 정도로 간단하게 완성했다.
이러한 식은 알고리즘에서 많이 활용할 수 있을 것 같다. single vertical bar를 이용할 수 있는 알고리즘 문제로는 https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제가 있다. 이 문제를 통해 single vertical bar를 알게 되었는데single vertical bar를 연습해보기 좋은 문제인 것 같다.
single vertical bar를 한국어로는 뭐라고 해야 하지
'개발 공부 > JavaScript' 카테고리의 다른 글
SVG ID를 유니크하게 관리하기 (0) | 2024.07.08 |
---|---|
[자바스크립트 딥 다이브] 타입변환과 단축평가 (0) | 2022.12.02 |
JavaScript 이론 정리 #4 [구조 분해 할당, 나머지 매개 변수, 전개구문] (2) | 2022.08.27 |
JavaScript 이론 정리 #3 [배열 메소드] (0) | 2022.08.17 |
JavaScript 이론 정리 #2 [number 메소드, Math 메소드, string 메소드] (0) | 2022.08.16 |
이진법 관련 알고리즘 문제를 풀다가 알게 되었다. 하나의 줄만 사용하여 이진법 관련한 계산을 간단하게 할 수 있다.
single vertical bar ('|') 란?
: 각 수를 이진법으로 변환한 후 각 자리를 1 또는 0으로 합한 후 결괏값에 대한 십진법 수를 반환한다.
single vertical bar를 사용할 때와 사용하지 않을 때 어떤 차이가 있는지 알아보자.
single vertical bar 없이 구현하기
const number1 = 21;
const number2 = 28;
number1.toString(2); // '10101'
number2.toString(2); // '11100'
이진법으로 변환하면 각각 10101, 11100이다. 그리고 이 두 이진법의 각 자리를 비교하여 1이 있는 경우엔 1로, 1이 없는 경우엔 0으로 합한다. 그러면 '11101'이 되고 다시 십진법으로 변환하면 29이다.
이 과정을 단순히 반복문으로 구현하면(이진법의 길이가 무조건 같다고 가정하는 경우)
const number1 = 21;
const number2 = 28;
//이진법으로 변환한다.
const number1Binary = number1.toString(2);
const number2Binary = number2.toString(2);
//자리 합을 담을 변수를 만든다.
let sumBinary = '';
//반복문을 돌면서 비교하며 1이 있는 경우엔 1을, 아닌 경우엔 0을 더한다.
for(let i = 0; i<number1Binary.length; i++){
if(number1Binary[i] === '1' || number2Binary[i] === '1'){
sumBinary += '1';
} else{
sumBinary += '0';
}
}
console.log(sumBinary); //'11101'
console.log(parseInt(sumBinary, 2)) // 29
이렇게 구현할 수 있다. 이러한 과정을 단축시킬 수 있는 것이 바로 single vertical bar ('|')이다.
single vertical bar로 구현하기
console.log(21 | 28); // 29
수상할 정도로 간단하게 완성했다.
이러한 식은 알고리즘에서 많이 활용할 수 있을 것 같다. single vertical bar를 이용할 수 있는 알고리즘 문제로는 https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제가 있다. 이 문제를 통해 single vertical bar를 알게 되었는데single vertical bar를 연습해보기 좋은 문제인 것 같다.
single vertical bar를 한국어로는 뭐라고 해야 하지
'개발 공부 > JavaScript' 카테고리의 다른 글
SVG ID를 유니크하게 관리하기 (0) | 2024.07.08 |
---|---|
[자바스크립트 딥 다이브] 타입변환과 단축평가 (0) | 2022.12.02 |
JavaScript 이론 정리 #4 [구조 분해 할당, 나머지 매개 변수, 전개구문] (2) | 2022.08.27 |
JavaScript 이론 정리 #3 [배열 메소드] (0) | 2022.08.17 |
JavaScript 이론 정리 #2 [number 메소드, Math 메소드, string 메소드] (0) | 2022.08.16 |