본문 바로가기

전체 글

(348)
[알고리즘] 에라토스테네스의 체(소수 판별) 소수 판별 알고리즘으로 n까지의 소수를 구하고 싶다면 자기 자신을 제외한 소수의 배수를 지워나가는 방법을 의미합니다.function primeNumberSieve(n) { const area = new Array(n + 1).fill(false); const result = []; for (let i = 2; i { if (index > 1 && !flag) { result.push(index); } }); return result;}const result = primeNumberSieve(10);console.log(result);// [2, 3, 5, 7] 위 알고리즘은 배열의 크기 때문에 메모리 문제가 발생할 수 있습니다. 이 경우 해당 수를 소수인지 확인하는 함수를 ..
[알고리즘] 최대공약수(gcd), 최소공배수(lcm) 최대공약수(유클리드 호제법)수학적 성질: 어떤 수 x가 a와 b를 모두 나눌 수 있다면, x는 b%a도 나눌 수 있다. 그 반대로 성립한다.// num1 최소공배수// 두 수의 곱 / 최대공약수function lcm(num1, num2) { return (num1 * num2) / gcd(num1, num2);}
[알고리즘] n진법 변환 10진법 → 2진법function Decimal2Binary(decimal) { let binary = ''; while(decimal) { binary = (decimal % 2) + binary; decimal = Math.floor(decimal / 2); } return binary + '(2)';}const decimal = 10;const result = Decimal2Binary(decimal);console.log(result);// 1010(2) 사실 JavaScript는 좋은 진법 변환 함수가 있습니다. 바로 toString()의 두 번째 인자를 이용하면 됩니다.const decimal = 10;console.log(decimal.toString(2));// 1..
[알고리즘] JS 순열, 조합 경우의 수 구하기(순열,중복순열,조합,중복조합) JS 작성했던 순열을 구현한 JS 코드 말고 새로운 방식으로 구현한 순열, 조합 구현 코드를 추가하겠습니다. 순열// nPr// 순열의 결과를 구하고 싶은 array// n개 중 선택할 개수 r// 기저사례를 위한 depthfunction permutation(array, r, depth) { if(r == depth) { // array 전체에서 원하는 결과만큼 slice // ex) [1,2,3] 중 2개만 원하는 경우 [1,2,3] -> [1,2], [1,3,2] -> [1,3] return array.slice(0,r); } const result = []; for(let i = depth; i [...acc, .....
[알고리즘] 배열 회전 1차원 배열 회전function rotate(array, step = 0) { if (step == 0) return [...array]; let temp; let stepped; if (step > 0) { // 시계(우측) 방향 회전 stepped = array.length - step; temp = array.slice(0, stepped); } else { // 반시계(좌측) 방향 회전 stepped = Math.abs(step); temp = array.slice(0, stepped); } return array.slice(stepped).concat(temp);}const a = [1, 2, 3, 4, 5, 6];const result = rotate(a, -..
[VSCode] C++ 설치 및 실행(with windows) 알고리즘 공부를 위해 C++를 사용할 일이 생겼고, 자주 사용하는 IDE인 VSCode에서 코드를 작성하기 위해 환경 설정을 합니다. 우선 기본적으로 VSCode에서 제공하는 공식문서를 참고하고 그 외 블로그들을 참고해 환경을 구축했습니다. VSCode를 실행하고 C/C++ Extension을 설치해야 합니다.추가적인 Extension은 자유롭게 추가하시면 됩니다. 여기에 C++는 컴파일러 언어이기 때문에 이를 실행시키기 위해서 컴파일러가 필요합니다. 먼저 terminal을 통해 설치된 컴파일러가 있는지 확인하겠습니다.g++ --version컴파일러가 설치되어 있다면 위와 같이 어떠한 버전이 나옵니다. 버전과 결과 내용은 사용자마다 다를 수 있습니다. 만약 설치가 되어 있지 않다면 MinGW를 설치해서 ..
[JS] 변수는 메모리에 어떻게 저장될까?(기본형, 참조형) JavaScript에서 변수는 var, let, const 키워드를 통해 선언할 수 있습니다. 변수명(식별자)은 A - Z, a - z, 0 - 9, _(underscore), $로 구성할 수 있습니다. 하지만 숫자로 시작할 수는 없습니다. 추가적으로 한글로 변수명을 만들 수 있습니다. 변수는 어떠한 값이 저장되어 있는 공간입니다. 이 변수에는 숫자, 문자 등 다양한 값을 저장할 수 있습니다. JS에서는 값의 형태에 따라 이름이 있고 이를 자료형이라고 합니다. 크게 기본형(원시형, Primitive), 참조형(Reference) 두 가지 자료형으로 나누어집니다. 기본형: string, number, bigint, boolean, undefined, null, symbol 총 7가지 종류.참조형: 기본형을..
[알고리즘 JS] 이분 탐색 반복문 구현function binarySearchWithLoop(sortedArray, val) { let left = 0; let right = sortedArray.length - 1; let mid; while(left val) { right = mid-1; } else { left = mid+1; } } return -1;} 재귀 구현function binarySearchWithRecursion(sortedArray, val) { let left = 0; let right = sortedArray.length - 1; if(left > right) return -..