알고리즘

Java/알고리즘 & 자료구조

[Java/알고리즘] 투 포인터 알고리즘(Two Pointer Algorithm) 이해하기 -1 : 종류, 활용방안

해당 글에서는 투 포인터 알고리즘에 대해 이해를 돕기 위해 작성한 글입니다. 1) 투 포인터 (Two Pointer Algorithm) 💡 투 포인터 (Two Pointer Algorithm) - 배열이나 리스트에서 '두 개의 포인터'를 사용하여 '특정 조건을 만족하는 부분 구간'을 효율적으로 탐색하는 알고리즘입니다. 일반적으로 배열이나 리스트가 '정렬되어 있을 때' 사용됩니다. - 투 포인터 알고리즘은 보통은 왼쪽 포인터와 오른쪽 포인터를 사용하며, 이들은 각각 탐색 범위의 시작과 끝을 가리킵니다. - 또는 동일한 시점을 기점으로 왼쪽 포인터를 고정한 상태에서 오른쪽 포인터를 이동하고, 조건에 따라 왼쪽 포인터도 이동하며 탐색하는 방식을 가집니다. - 해당 알고리즘은 탐색 범위 내에서 특정 조건을 만족..

Java/알고리즘 & 자료구조

[Java/알고리즘] 정렬 알고리즘(Sort Algorithm) 이해하기 -1 : 기본 구조 및 종류

해당 글에서는 정렬 알고리즘에 대해 기본적인 구조와 종류에 대해서 알아봅니다. 💡 [참고] 전체 알고리즘 구성 중에 '정렬 알고리즘'에 대해 알아봅니다. 1) 정렬 알고리즘(Sort Algorithm) 💡 정렬 알고리즘(Sort Algorithm) - ‘데이터’를 ‘특정한 기준에 따라 순서대로 정렬’하는 알고리즘을 의미합니다. 1. 정렬 알고리즘의 특징 💡 정렬 알고리즘의 특징 - 정렬 알고리즘만이 가지고 있는 특징에 대해서 알아봅니다. 특징 설명 시간 복잡도 일부 알고리즘은 작은 데이터 집합에 대해 빠르지만, 큰 데이터 집합에 대해 느릴 수 있습니다. 알고리즘의 시간 복잡도를 고려하여 적절한 정렬 알고리즘을 선택해야 합니다. 안정성 안정적인 정렬 알고리즘은 동일한 값의 순서가 바뀌지 않는 특징을 가지고..

Java/알고리즘 & 자료구조

[Java/알고리즘] 깊이 우선 탐색(DFS) / 너비 우선 탐색(BFS) 이해하기 -1 : 이론 및 구조

해당 글에서는 알고리즘 중에서 깊이우선탐색(DFS) / 너비우선탐색(DFS)에 대해서 알아봅니다. 1) 깊이우선탐색(DFS) / 너비우선탐색(DFS) 전체 구조 💡 깊이우선탐색(DFS) / 너비우선탐색(DFS) 전체 구조 - 해당 글에서는 알고리즘 구조에서 ‘탐색 알고리즘’ - ‘완전 탐색’ - ‘비 선형 구조 탐색’에 해당하는 깊이 우선 탐색(DFS) / 너비 우선탐색 (BFS)에 대해 알아봅니다. 💡 [참고] 깊이 우선 탐색(DFS) / 너비 우선 탐색(BFS)을 이해하기 전에 전제로 알면 좋은 알고리즘과 자료구조입니다. 분류 주제 링크 알고리즘 완전 탐색 알고리즘 https://adjh54.tistory.com/196 알고리즘 완전 탐색 알고리즘 : 종료 https://adjh54.tistory.c..

Java/알고리즘 & 자료구조

[Java/자료구조] 비선형구조 이해하기 -3 : 그래프 (방향, 무방향 그래프)

해당 글에서는 자료구조에서 비선형구조 중 그래프에 대해 알아봅니다. 💡 [참고] 자료구조의 전체 구조 - 해당 글에서는 자료구조 중 비선형 구조 > 그래프(방향트리/무방향 트리)에 대해 알아봅니다. 1) 비선형 구조(Non Linear) 💡 비선형 구조(Non Linear) - 데이터를 저장하기 위한 방법으로 데이터 간의 관계를 이루면서 ‘계층적인 구조‘를 가지며 ‘일렬로 나열되지 않은 자료구조’ 형태를 의미합니다. - 일련 되지 않은 자료구조는 계층적으로 데이터의 관계가 부모-자식 관계, 연결 관계, 또는 소속 관계 등을 가지고 있어서 계층적이거나 상호 연결되어 있습니다. - 대표적인 비선형 구조는 트리(Tree), 그래프(Graph)등이 이에 해당합니다. 💡 [참고] 비선형 구조에서 트리에 대해 궁금..

Java/알고리즘 & 자료구조

[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -3 : 문제로 이해하기

해당 글에서는 알고리즘 중 ‘완전 탐색’에 대해서 다양한 문제를 통해서 이해를 돕기 위해 작성한 글입니다. 💡 [참고] 완전 탐색(Exhaustive Search)의 이론에 대해 궁금하시면 하단의 글을 참고하시면 크게 도움이 됩니다. [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류 해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다. 1) 완전 탐색(Exhaustive Search) 💡 완전 탐색(Exhaustive Sear adjh54.tistory.com [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -2 : 종류 별 이해 해당 글에서는 탐색..

Java/알고리즘 & 자료구조

[Java/알고리즘] 분할정복(Divide and Conquer Algorithm) 이해하기

해당 글에서는 알고리즘 중 분할정복에 대해서 이해를 돕기 위해 작성한 글입니다. 1) 분할정복(Divide and Conquer Algorithm) 💡 분할정복(Divide and Conquer Algorithm)이란? - ‘큰 문제’를 ‘작은 문제’로 나누어서 해결하는 알고리즘을 의미합니다. 해당 알고리즘을 활용하여 크고 방대한 문제를 해결할 때 유용한 알고리즘입니다. - 구체적으로 하나의 큰 문제를 작은 부분 문제들로 나눕니다. 그리고 나눈 부분 문제를 해결하고 해결된 해들을 모아 원래의 문제를 해결해 나아가는 방식을 의미합니다.(분할 → 정복 → 결합 과정) [ 더 알아보기 ] 💡 분할 정복과 동적 계획법 알고리즘 차이 - 동적 계획법(Dynamic Programming)과 분할 정복(Divide ..

Java/알고리즘 & 자료구조

[Java/알고리즘] 그리디 알고리즘(탐욕법, Greedy Algorithm) 이해하기

해당 글에서는 알고리즘의 설계 방법 중 탐욕법/그리디 알고리즘에 대해서 이해를 돕기 위해 작성한 글입니다. 1) 그리디 알고리즘(탐욕법, Greedy Algorithm) 💡 그리디 알고리즘(탐욕법, Greedy Algorithm) 이란? - 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법론으로 ‘각 단계에서 최적이라고 생각되는 것을 선택’ 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘입니다. - 이때, 항상 최적의 값을 보장하는것이 아니라 최적의 값의 ‘근사한 값’을 목표로 하고 있습니다. - 주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적해를 구한 뒤 이를 결합하여 전체 문제의 최적해를 구하는 경우에 주로 사용됩니다. 💡 [문제] 노드에서 가장 합이 높은..

Java/알고리즘 & 자료구조

[Java/알고리즘] 동적 계획법(DP: Dynamic Programming) 이해하기

해당 글에서는 알고리즘 중 동적 계획법에 대한 이해를 돕기 위해 작성한 글입니다. 1) 동적 계획법(DP: Dynamic programming)💡 동적 계획법(DP: Dynamic programming) - 작은 문제들을 풀면서 그 결과를 저장해 나아가면서 전체 문제를 해결하는 알고리즘을 의미합니다. - 해당 알고리즘의 특징은 중복 계산을 줄여서 계산 속도를 높일 수 있으며 경우의 수가 많은 경우에도 효율적으로 계산할 수 있습니다. 일반적으로 재귀적으로 구현되며 메모이제이션(Memoization) 기법을 사용하여 중복 계산을 피합니다. [더 알아보기] 💡 재귀(Recursion)란? - 자기 자신을 호출하는 함수로 반복적으로 호출을 함으로써 원하는 결과를 도출 할 수 있습니다. 💡 메모이제이션(Memoi..

Java/알고리즘 & 자료구조

[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -2 : 종류 별 이해

해당 글에서는 탐색 알고리즘 중 탐색 알고리즘에서 완전 탐색의 종류 별로 상세하게 이해를 돕기 위해 작성한 글입니다. 💡 [참고] 이전에 작성한 글을 읽고 오시면 도움이 됩니다. [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다. 1) 완전 탐색(Exhaustive Search) 💡 완전 탐색(Exhaustive Searadjh54.tistory.com 1) 완전 탐색(Exhaustive Search)💡 완전 탐색(Exhaustive Search) - ‘모든 가능한 경우의 수를 탐색’하여 ‘최적의 결과를 찾는 방법’을 의미합니..

Java/알고리즘 & 자료구조

[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류

해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다. 1) 완전 탐색(Exhaustive Search)💡 완전 탐색(Exhaustive Search)이란? - ‘모든 가능한 경우의 수를 탐색’하여 ‘최적의 결과를 찾는 방법’을 의미합니다. - 모든 가능성을 고려하기 때문에 항상 최적의 해를 찾을 수 있지만 경우의 수가 매우 많은 경우 시간과 메모리의 부담이 커질 수 있습니다. 그렇기에 문제의 특성에 따라 다른 탐색 기법을 사용하는 것이 좋습니다. 2) 완전 탐색의 종류 💡완전 탐색의 종류 - 탐색 알고리즘 중에서 '완전 탐색'에 대해 이해하고 각각의 탐색 종류에 대해서 이해합니다.알고리즘 종류설명장점단점브루트 포스‘모든 경..

adjh54
'알고리즘' 태그의 글 목록