반응형
1. 그래프 데이터 구조그래프는 일반적으로 인접 리스트 또는 인접 행렬로 표현되며, 인접 리스트를 사용한 방식은 다음과 같습니다.class GraphData { constructor() { this.adjacencyList = {}; } addVertex(vertex) { if (!this.adjacencyList[vertex]) { this.adjacencyList[vertex] = []; } } addEdge(vertex1, vertex2) { this.adjacencyList[vertex1].push(vertex2); this.adjacencyList[vertex2].push(vertex1); }}2. 너비 우선 탐색 (BFS)BFS에서 각 노드를 방문..
1. 팩토리얼 (Factorial)팩토리얼은 자연수 n에 대해 n! = n x (n-1) x (n-2) X ... X 1로 정의됩니다. 예를 들어, 5! = 5 X 4 X 3 X 2 X 1 = 120입니다.function factorial(n) { // 기본 사례: 0! = 1, 1! = 1 if (n === 0 || n === 1) { return 1; } // 재귀 호출 return n * factorial(n - 1);}// 예제 사용console.log(factorial(5)); // 출력: 120 재귀 호출이 깊어지면 스택 오버플로우가 발생할 수 있고, 큰 숫자의 팩토리얼을 계산할 때는 반복문을 사용하는 것이 더 안전할 수 있습니다.2. 피보나치 수열 (Finbonacci Sequ..
1. 선형 탐색(Linear Search)선형 탐색은 배열의 각 요소를 순차적으로 확인해 원하는 값을 찾는 알고리즘으로, 배열의 길이에 비례하여 시간이 소요되므로, 최악의 경우 O(n)의 시간 복잡도를 가집니다.// 선형 탐색 알고리즘function linearSearch(arr, target) { for (let i = 0; i 2. 이진 탐색(Binary Search)이진 탐색은 정렬된 배열에서 중간 요소와 비교하여 원하는 값을 찾는 알고리즘으로, 배열을 반으로 나누어 탐색 범위를 줄여가므로, O(log n)의 시간 복잡도를 가집니다. 이진 탐색을 사용하기 위해 배열이 반드시 정렬되어야 합니다.function binarySearch(arr, target) { let left = 0; let ri..
1. 선택 정렬선택 정렬은 배열에서 최소값을 찾아 맨 앞의 원소와 교환하는 방식입니다.function selectSort(arr) { const n = arr.length; for (let i = 0; i 2. 삽입 정렬삽입 정렬은 정렬된 부분과 정렬되지 않은 부분을 나누어, 정렬되지 않은 부분의 원소를 정렬된 부분에 삽입하는 방식입니다.function insertionSort(arr) { const n = arr.length; for (let i = 1; i = 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } return arr;}const array3 = [12, 11, 13, 5, 6]..
1. 정규 표현식정규 표현식이란 특정 문자열 패턴을 정의하는 문자열로 이메일 주소, 비밀 번호, 전화 번호, 아이디 등 특정 형식의 날짜 등을 검증할 때 사용하는 표현식 입니다. 정규 표현식의 기호는 다음과 같습니다., : 임의의 한 문자* : 0개 이상의 반복+ : 1개 이상의 반복? : 0개 또는 1개의 반복^ : 문자열의 시작$ : 문자열의 끝[ ] : 문자 클래스 (ex. [abc]는 'a', 'b', 'c' 중 하나)| 또는 (OR) 연산자( ): 그룹화2. 정규 표현식 생성하기정규 표현식은 두 가지 방법으로 생성할 수 있으며, 리터럴 표기법, RegExp를 사용해 표현할 수 있습니다.리터럴 표기법:const regex = /pattern/;RegEXP 객체 사용:const regex = ne..
1.Jest란?Jest는 Javascript 애플리케이션을 위한 테스팅 프레임워크로, 페이스북에서 개발하고, 주로 React 애플리케이션에서 테스트용으로 쓰지만, 일반 Javascript 및 Node.js 애플리케이션에서도 효과적인 사용이 가능합니다. Jest는 단위 테스트, 통합 테스트, 스냅샷 테스트 등을 지원하여 개발자가 코드의 품질을 보장할 수 있도록 도와주는 라이브러리입니다.2. Jest의 특징간단한 설정: 기본적으로 설치 후 바로 사용할 수 있어 복잡한 설정 필요X스냅샷 테스트: UI 컴포넌트의 렌더링 결과를 저장, 이후 비교하여 변경 사항을 쉽게 확인모의 함수(mock functions): 테스트 중 특정 함수의 동작을 모의하여, 의존성을 줄이고 테스트의 집중도를 높임비동기 테스트 지원: P..