- [ Algorithm/알고리즘 ]다이나믹 프로그래밍2024-08-20 11:10:22다이나믹 프로그래밍이란? 다이나믹 프로그래밍은 복잡한 문제를 여러 하위 문제로 나누어 해결한 뒤, 그 결과를 결합하여 전체 문제를 해결하는 방법입니다. DP는 주로 중복된 하위 문제가 존재하는 경우에 사용됩니다. 같은 하위 문제를 여러 번 계산하지 않고, 이미 계산된 결과를 저장해두고 필요할 때 재사용하는 것이 핵심입니다.다이나믹 프로그래밍의 특징최적 부분 구조: 문제의 최적 해가 그 하위 문제들의 최적 해로 구성됩니다.중복된 하위 문제: 동일한 하위 문제를 반복해서 계산하지 않고, 한 번 계산한 값을 저장해서 재사용합니다. 다이나믹 프로그래밍의 접근 방식 - Java 구현 상향식 접근 (Bottom-Up) public class FibonacciDP { public static int fibona..
- [ Algorithm/알고리즘 ]카데인 알고리즘2024-07-16 09:00:54카데인 알고리즘이란?카데인 알고리즘은 연속 부분 배열의 최대 합을 구하는 효율적인 방법으로, 컴퓨터 과학과 알고리즘 문제 해결에서 자주 사용됩니다. 이 알고리즘은 O(n) 시간 복잡도를 가지며, 동적 계획법(Dynamic Programming) 접근법을 사용합니다.카데인 알고리즘의 원리카데인 알고리즘은 현재까지의 최대 부분 배열의 합을 유지하면서, 각 요소를 순차적으로 탐색합니다. 알고리즘은 두 가지 값을 유지합니다.현재까지의 최대 합 (max_so_far) : 지금까지 발견한 최대 부분 배열의 합현재 위치에서 끝나는 최대 합 (max_ending_here) : 현재 위치에서 끝나는 부분 배열 중 최대 합알고리즘 단계1. max_so_far와 max_ending_here를 배열의 첫 번째 요소로 초기화합..
- [ Algorithm/알고리즘 ]브루트포스 탐색 알고리즘2024-06-04 10:24:53브루트포스 알고리즘이란?브루트포스 알고리즘은 가능한 모든 경우를 탐색하여 문제를 해결하는 방법입니다. "완전 탐색"이라고도 불리며, 무차별 대입 방식으로 모든 후보를 검사합니다. 이는 가장 기본적인 알고리즘 기법 중 하나입니다.브루트포스 알고리즘의 특징단순성: 구현이 간단하고 이해하기 쉬움완전성: 해가 존재한다면 반드시 찾아냄비효율성: 경우의 수가 많을 경우 시간이 많이 소요됨브루트포스 알고리즘의 장점쉬운 구현: 복잡한 논리나 데이터 구조가 필요 없으며, 직접적인 접근 방식으로 쉽게 구현할 수 있습니다.명확한 해답 보장: 모든 경우의 수를 확인하기 때문에 해답이 존재하면 반드시 찾아냅니다.브루트포스 알고리즘의 단점비효율성: 입력 크기가 커질수록 탐색해야 할 경우의 수가 급격히 증가하여, 시간 복잡도가 매..
- [ Algorithm/알고리즘 ]Z-order 탐색 알고리즘2024-05-21 17:50:05Z-order 탐색 알고리즘이란?Z-order 탐색 알고리즘은 Z-order curve를 사용하여 다차원 공간 데이터를 1차원으로 매핑하는 기법입니다. 이를 통해 공간 데이터를 효율적으로 검색하고 정렬할 수 있습니다. Z-order curve는 공간을 재귀적으로 분할하고, 각 분할된 공간에 번호를 매깁니다.Z-order Curve의 개념Z-order curve는 공간을 Z 형태로 분할하는 기법입니다. 예를 들어 2차원 좌표 (x, y)를 이진수로 변환하고, 각 차원의 비트를 번갈아가며 결합하여 1차원 값으로 매핑합니다. 이 방식은 공간의 근접성을 유지하면서 데이터를 정렬할 수 있게 해 줍니다.Z-order 탐색의 장점공간 효율성: Z-order curve는 공간의 근접성을 유지하여 데이터의 클러스터링을 ..
- [ Algorithm/알고리즘 ]유클리드 호제법(Euclidean Algorithm)2024-05-16 13:51:06유클리드 알고리즘과 호제법 ☞ 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. ☞ 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.최대공약수(GCD: Greatest Common Divisor) & 최소공배수(LCM: Least Common Multiple)란?☞ 최대공약수(GCD: Greatest Common Divisor): 두 수의 공통된 '약수 중에서 가장 큰 수'를 의미한다.☞ 최소공배수(LCM: Least Common Multiple): 두 수의 공통된 '배수 중에서 가장 작은 수'를 의미한다.두 수의 최대공약수, 최소공배수 구하기최대공약수(GCD) 구현 방법1. 반복문으로 구현b가 0..