본문 바로가기

Algorithm

(7)
스케쥴링 알고리즘 (FCFS, SJF, SRTF, RR) 1. FCFS (First Come, First Served, 선착순) 📌 특징:먼저 온 프로세스부터 순서대로 실행 (비선점)단순한 구조, 하지만 긴 작업이 먼저 오면 전체 지연 가능성 있음 (Convoy Effect)✅ 적합한 경우배치 처리 시스템 (Batch Processing System)백그라운드에서 실행되는 긴 작업을 순차적으로 처리할 때프린터 대기열 (Print Queue)먼저 온 인쇄 작업부터 차례로 인쇄💡 예시:은행 창구: 먼저 온 고객부터 처리하는 방식파일 다운로드 서버: 먼저 요청한 파일부터 다운로드  2. SJF (Shortest Job First, 최단 작업 우선)📌 특징:실행 시간이 가장 짧은 작업부터 처리 (비선점)평균 대기 시간 최소화 (하지만 긴 작업이 계속 밀릴 가능성..
이분법(Bisection Method) 이분법(Bisection Method)은 구간을 반씩 나누며 해를 찾아가는 방법입니다. 주어진 구간에서 함수의 값을 계산하여 구간을 절반으로 나누고, 함수값이 0에 가까운 지점을 찾는 방식으로 근을 찾아갑니다. 이 방법은 주로 연속 함수의 근을 구할 때 사용됩니다.이분법을 이용한 함수 근 찾기 이분법을 사용할 때 중요한 점은 다음과 같습니다:초기 구간을 설정해야 합니다. 이 구간에서 함수값이 부호가 달라야 합니다. (즉, 함수의 값이 한 구간에서 양수에서 음수로 변하거나 그 반대여야 합니다)구간의 중간 값을 계산하여 해당 함수의 값을 구합니다.함수값이 0에 가까워지면 그 값을 해로 사용하거나, 구간을 절반으로 나누어 반복합니다.public class BisectionMethod { // 함수 f(x..
파스칼의 삼각형 파스칼의 삼각형파스칼의 삼각형(Pascal's Triangle)은 삼각형 모양으로 배열된 수열로, 수학에서 조합과 이항계수와 밀접하게 관련된 구조입니다. 파스칼의 삼각형은 다음과 같이 구성됩니다:삼각형의 첫 번째 줄은 항상 1로 시작합니다.각 줄의 양 끝은 항상 1입니다.삼각형의 내부 숫자는 바로 윗줄의 두 숫자를 더하여 계산됩니다.파스칼의 삼각형 예시 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1첫 번째 줄: 1두 번째 줄: 1, 1세 번째 줄: 1, 2, 1 (2 = 1 + 1)네 번째 줄: 1, 3, 3, 1 (3 = 1 + 2, 3 = 2 + 1)다섯 번째 줄: 1, 4, 6, 4, 1 (4 = 1 + 3, 6 = 3 + 3, 4 = 3 ..
이진트리탐색 - 전위, 중위, 후위 전위 순회(Preorder Traversal)현재 노드 → 왼쪽 서브트리 → 오른쪽 서브트리출력 순서: 루트 먼저중위 순회(Inorder Traversal)왼쪽 서브트리 → 현재 노드 → 오른쪽 서브트리출력 순서: 정렬된 순서후위 순회(Postorder Traversal)왼쪽 서브트리 → 오른쪽 서브트리 → 현재 노드출력 순서: 루트 마지막 전위 순회(Preorder): 1 2 4 5 3 6 7중위 순회(Inorder): 4 2 5 1 6 3 7후위 순회(Postorder): 4 5 2 6 7 3 1class TreeNode { int value; TreeNode left, right; public TreeNode(int value) { this.value = value; ..
깊이 우선 탐색 - DFS(Depth-First Search) - dijkstra 다익스트라 DFS(Depth-First Search)는 깊이 우선 탐색 알고리즘으로, 그래프나 트리에서 한 경로를 끝까지 탐색한 후, 다른 경로로 이동하며 탐색하는 방식입니다. DFS는 재귀 또는 스택을 이용해 구현됩니다.  재귀 호출 또는 스택을 사용해 구현.깊이 우선으로 탐색하며, 한 정점을 끝까지 방문한 뒤 돌아옴.경로의 끝까지 도달하거나 특정 조건을 만족할 때 종료 가능.public class MazeSolverDFS { private static final int[] dx = {-1, 1, 0, 0}; // 상, 하, 좌, 우 private static final int[] dy = {0, 0, -1, 1}; private static boolean found = false; publ..
넓이우선탐색 BFS(Breadth-First Search) BFS(Breadth-First Search)는 너비 우선 탐색이라고 하며, 그래프나 트리에서 가까운 노드부터 차례대로 탐색하는 알고리즘입니다. 주로 최단 경로 문제나 모든 정점을 방문해야 하는 경우에 사용됩니다.  큐(Queue) 자료구조를 사용하여 구현합니다.시작점에서 가까운 정점부터 탐색하며, 같은 거리의 정점들을 먼저 모두 방문한 후, 다음 거리의 정점들을 탐색합니다.최단 경로 보장: 모든 간선의 가중치가 동일하거나 1로 간주될 경우, BFS는 시작점에서 목표점까지의 최단 경로를 보장합니다.package bfs;import java.util.*;public class MazeSolver { public static void main(String[] args) { int[][] m..
에라토스테네스 체 (소수찾기) 초기화:2부터 원하는 범위 nnn까지의 모든 정수를 나열합니다.소수를 판별하기 위해 각 숫자에 대해 "소수인지 아닌지"를 기록할 배열을 생성합니다. (예: true/false로 초기화)2부터 시작:첫 번째 소수인 2를 선택합니다.2의 배수들을 모두 제거합니다(2는 제외). 즉, 4, 6, 8, ... 등을 지웁니다.다음 숫자로 이동:다음 남아있는 숫자를 찾습니다(소수임).그 숫자의 배수를 모두 제거합니다. public static List findPrimes(int n) { // 소수 여부를 표시하는 배열 생성 boolean[] isPrime = new boolean[n + 1]; Arrays.fill(isPrime, true); // 2부터 시작해..