정렬
특징
적용 사례
버블 정렬 CODE
function bubbleSort(arr) {
let n = arr.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// swap
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
console.log(bubbleSort([5, 3, 8, 4, 2]));
완전 탐색
특징
적용 사례
소수 찾기 CODE
function isPrime(num) {
if (num <= 1) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
console.log(isPrime(5)); // true
console.log(isPrime(4)); // false
그리디
특징
적용 사례
거스름 돈 문제 CODE
function getChange(total) {
const coins = [500, 100, 50, 10];
let count = 0;
for (let coin of coins) {
count += Math.floor(total / coin);
total %= coin;
}
return count;
}
console.log(getChange(1260));
동적계획법 (DP)
특징
적용 사례
거스름 돈 문제 CODE
function fibonacci(n) {
let dp = [0, 1];
for (let i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
console.log(fibonacci(10));
깊이 우선 탐색 (DFS)
특징
적용 사례
CODE
function dfs(graph, start) {
let visited = new Set();
let stack = [start];
while (stack.length) {
let node = stack.pop();
if (!visited.has(node)) {
visited.add(node);
stack.push(...graph[node].filter(n => !visited.has(n)));
}
}
return Array.from(visited);
}
let graph = {
A: ['B', 'C'],
B: ['A', 'D', 'E'],
C: ['A', 'F'],
D: ['B'],
E: ['B'],
F: ['C']
};
console.log(dfs(graph, 'A')); // ['A', 'C', 'F', 'B', 'E', 'D']
너비 우선 탐색 (BFS)
특징
적용 사례
CODE
function bfs(graph, start) {
let visited = new Set();
let queue = [start];
while (queue.length) {
let node = queue.shift();
if (!visited.has(node)) {
visited.add(node);
queue.push(...graph[node].filter(n => !visited.has(n)));
}
}
return Array.from(visited);
}
let graph = {
A: ['B', 'C'],
B: ['A', 'D', 'E'],
C: ['A', 'F'],
D: ['B'],
E: ['B'],
F: ['C']
};
console.log(bfs(graph, 'A')); // ['A', 'B', 'C', 'D', 'E', 'F']