자바스크립트를 이용한 알고리즘과 데이터 구조를 공부하며 작성한 코드를 기록합니다.
- JavaScript Algorithms and Data Structures Masterclass
- 자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
- Programmers
- Baekjoon
let arr = new Array(n).fill(0).map(() => new Array(n).fill(0));
let arr2 = Array.from({ length: n }, () => Array(n).fill(0));
let arr3 = Array.from(Array(length), () => Array(n).fill(0));
function combination(arr, k) {
function backtrack(start, path) {
if (path.length === k) {
result.push([...path]);
return;
}
for (let i = start; i < arr.length; i++) {
path.push(arr[i]);
backtrack(i + 1, path);
path.pop();
}
}
const result = [];
backtrack(0, []);
return result;
}
function duplicateCombination(arr, k) {
function backtrack(start, path) {
if (path.length === k) {
result.push([...path]);
return;
}
for (let i = start; i < arr.length; i++) {
path.push(arr[i]);
backtrack(i, path);
path.pop();
}
}
const result = [];
backtrack(0, []);
return result;
}
function permutation(arr, k) {
function backtrack(path) {
if (path.length === k) {
result.push([...path]);
return;
}
for (let i = 0; i < arr.length; i++) {
if (path.includes(arr[i])) continue;
path.push(arr[i]);
backtrack(path);
path.pop();
}
}
const result = [];
backtrack([]);
return result;
}
function duplicatePermutation(arr, k) {
function backtrack(path) {
if (path.length === k) {
result.push([...path]);
return;
}
for (let i = 0; i < arr.length; i++) {
path.push(arr[i]);
backtrack(path);
path.pop();
}
}
const result = [];
backtrack([]);
return result;
}
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
// 문자열 오름차순 정렬
strArray.sort();
// 문자열 내림차순 정렬
strArray.sort().reverse();
// 숫자 오름차순 정렬
numArray.sort((a, b) => a - b);
// 숫자 내림차순 정렬
numArray.sort((a, b) => b - a);
const graph = [[1, 2, 4], [0, 5], [0, 5], [4], [0, 3], [1, 2]];
const visited = Array(6).fill(false);
DFS(graph, 0, visited);
function DFS(graph, v, visited) {
visited[v] = true;
for (let node of graph[v]) {
if (!visited[node]) {
dfs(graph, node, visited);
}
}
}
const graph = [[1, 2, 4], [0, 5], [0, 5], [4], [0, 3], [1, 2]];
const visited = Array(6).fill(false);
BFS(graph, 0, visited);
function BFS(graph, start, visited) {
const queue = new Queue();
queue.enqueue(start);
visited[start] = true;
while (queue.size()) {
const v = queue.dequeue();
for (const node of graph[v]) {
if (!visited[node]) {
queue.enqueue(node);
visited[node] = true;
}
}
}
}