[Java/자료구조] 선형구조 - 순차 리스트(Sequential List) 이해하기 : 배열, 리스트
·
Java/알고리즘 & 자료구조
해당 글에서는 자료구조 중 선형구조에 포함되는 순차 리스트 중 배열, 리스트 대해 알아봅니다. 💡 [참고] 자료구조의 전체 구조입니다. - 해당 자료구조 중 선형구조 >> 선형 리스트에 대해서 알아봅니다. 1) 선형 구조(Linear Structure) 💡 선형 구조(Linear Structure)란? - 데이터를 저장하기 위한 기본적인 형태로 데이터가 '일렬로 나열'되어 있을 뿐만 아니라 데이터 간에 순서가 있고 논리적으로 이어져 있는 구조를 의미합니다. - 선형 구조에는 순차 리스트, 연결 리스트, 큐(Queue), 스택(Stack), 덱(deque)이 있습니다. 💡 [참고] 큐, 스택, 덱에 대해 궁금하시면 아래의 글을 참고하시면 크게 도움이 됩니다. [Java/자료구조] 선형구조 이해하기 -1 :..
[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -3 : 문제로 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 ‘완전 탐색’에 대해서 다양한 문제를 통해서 이해를 돕기 위해 작성한 글입니다. 💡 [참고] 완전 탐색(Exhaustive Search)의 이론에 대해 궁금하시면 하단의 글을 참고하시면 크게 도움이 됩니다. [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류 해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다. 1) 완전 탐색(Exhaustive Search) 💡 완전 탐색(Exhaustive Sear adjh54.tistory.com [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -2 : 종류 별 이해 해당 글에서는 탐색..
[Java/자료구조] 선형구조 - 큐(Queue) 이해하기: 일반 큐, 우선순위 큐(Priority Queue) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 자료구조에서 선형구조의 큐 중에서 ‘우선순위 큐(Priority Queue)'에 대해 이해를 돕기 위해 작성한 글입니다. 💡 [참고] 자료구조의 전체 구조를 확인해봅니다. - 해당 부분은 선형 구조 중 큐 >> 일반 큐, 우선순위 큐에 대해 자세히 알아봅니다. 💡 우선순위 큐를 이해하기 전에 알아야 할 선형구조와 큐에 대해 간단히 알아봅니다. 1) 선형구조(Linear Structure), 큐(Queue) 1. 선형 구조(Linear Structure) 💡 선형 구조(Linear Structure) - 데이터를 저장하기 위한 기본적인 형태로 데이터가 '일렬로 나열'되어 있을 뿐만 아니라 데이터 간에 순서가 있고 논리적으로 이어져 있는 구조를 의미합니다. - 선형구조에는 큐(Queue), 스..
[Java/알고리즘] 분할정복(Divide and Conquer Algorithm) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 분할정복에 대해서 이해를 돕기 위해 작성한 글입니다. 1) 분할정복(Divide and Conquer Algorithm) 💡 분할정복(Divide and Conquer Algorithm)이란? - ‘큰 문제’를 ‘작은 문제’로 나누어서 해결하는 알고리즘을 의미합니다. 해당 알고리즘을 활용하여 크고 방대한 문제를 해결할 때 유용한 알고리즘입니다. - 구체적으로 하나의 큰 문제를 작은 부분 문제들로 나눕니다. 그리고 나눈 부분 문제를 해결하고 해결된 해들을 모아 원래의 문제를 해결해 나아가는 방식을 의미합니다.(분할 → 정복 → 결합 과정) [ 더 알아보기 ] 💡 분할 정복과 동적 계획법 알고리즘 차이 - 동적 계획법(Dynamic Programming)과 분할 정복(Divide ..
[Java/알고리즘] 그리디 알고리즘(탐욕법, Greedy Algorithm) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘의 설계 방법 중 탐욕법/그리디 알고리즘에 대해서 이해를 돕기 위해 작성한 글입니다.1) 그리디 알고리즘(탐욕법, Greedy Algorithm)💡 그리디 알고리즘(탐욕법, Greedy Algorithm) 이란?- 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법론으로 ‘각 단계에서 최적이라고 생각되는 것을 선택’ 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘입니다.- 이때, 항상 최적의 값을 보장하는것이 아니라 최적의 값의 ‘근사한 값’을 목표로 하고 있습니다.- 주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적해를 구한 뒤 이를 결합하여 전체 문제의 최적해를 구하는 경우에 주로 사용됩니다. 💡 [문제] 노드에서 가장 합이 높은 방법..
[Java/알고리즘] 동적 계획법(DP: Dynamic Programming) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 동적 계획법에 대한 이해를 돕기 위해 작성한 글입니다. 1) 동적 계획법(DP: Dynamic programming)💡 동적 계획법(DP: Dynamic programming) - 작은 문제들을 풀면서 그 결과를 저장해 나아가면서 전체 문제를 해결하는 알고리즘을 의미합니다. - 해당 알고리즘의 특징은 중복 계산을 줄여서 계산 속도를 높일 수 있으며 경우의 수가 많은 경우에도 효율적으로 계산할 수 있습니다. 일반적으로 재귀적으로 구현되며 메모이제이션(Memoization) 기법을 사용하여 중복 계산을 피합니다. [더 알아보기] 💡 재귀(Recursion)란? - 자기 자신을 호출하는 함수로 반복적으로 호출을 함으로써 원하는 결과를 도출 할 수 있습니다. 💡 메모이제이션(Memoi..
[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -2 : 종류 별 이해
·
Java/알고리즘 & 자료구조
해당 글에서는 탐색 알고리즘 중 탐색 알고리즘에서 완전 탐색의 종류 별로 상세하게 이해를 돕기 위해 작성한 글입니다.   💡 [참고] 이전에 작성한 글을 읽고 오시면 도움이 됩니다. [Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다. 1) 완전 탐색(Exhaustive Search) 💡 완전 탐색(Exhaustive Searadjh54.tistory.com    1) 완전 탐색(Exhaustive Search)💡 완전 탐색(Exhaustive Search)- ‘모든 가능한 경우의 수를 탐색’하여 ‘최적의 결과를 찾는 방법..
[Java/알고리즘] 완전 탐색(Exhaustive Search) 이해하기 -1 : 정의 및 종류
·
Java/알고리즘 & 자료구조
해당 글에서는 탐색 알고리즘 중에서 완전 탐색 알고리즘에 대해 이해하고 각각의 종류에 대해 이해 및 시간 복잡도에 대해 확인해 봅니다.  1) 완전 탐색(Exhaustive Search)💡 완전 탐색(Exhaustive Search)이란?- ‘모든 가능한 경우의 수를 탐색’하여 ‘최적의 결과를 찾는 방법’을 의미합니다.- 모든 가능성을 고려하기 때문에 항상 최적의 해를 찾을 수 있지만 경우의 수가 매우 많은 경우 시간과 메모리의 부담이 커질 수 있습니다. 그렇기에 문제의 특성에 따라 다른 탐색 기법을 사용하는 것이 좋습니다.  2) 완전 탐색의 종류 💡완전 탐색의 종류- 탐색 알고리즘 중에서 '완전 탐색'에 대해 이해하고 각각의 탐색 종류에 대해서 이해합니다.알고리즘 종류설명장점단점브루트 포스‘모든 ..
[Java/자료구조] 선형 배열(Linear Array) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 선형 배열에 대해 이해를 돕기 위해 작성한 글입니다. 1) 선형 배열(Linear Array)💡 선형 배열(Linear Array) 이란? - 데이터 요소들이 ‘일렬로 연결되어 있는 배열’을 의미합니다. - 각 요소들은 인덱스라는 고유한 숫자로 식별되며 배열을 선언할 때 각 요소에 데이터 타입과 배열의 길이를 지정해야 합니다. [ 더 알아보기 ] 💡 비선형 배열(Non-Linear Array) - 데이터를 일렬로 나열하지 않고, 특정한 규칙에 따라 구조를 형성하는 배열을 의미합니다. - 대표적인 비선형 배열로는 트리(tree)와 그래프(graph)가 있습니다. 트리는 부모-자식 관계를 가진 노드들이 연결된 구조이며, 그래프는 노드와 간선(edge)으로 이루어진 구조입니다. 2)..
[Java/알고리즘] 재귀 함수(Recursion Function) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 재귀함수에 대해 이해하며 다양한 예시와 재귀함수를 이용한 알고리즘을 기반으로 이해를 돕기 위해 작성한 글입니다. 1) 재귀함수(Recursion Function)💡 재귀함수(Recursion Function)란? - 함수 내부에서 ‘자기 자신을 호출’하는 함수를 의미합니다. 이를 통해서 함수가 자신을 반복적으로 호출하면서 원하는 결과를 도출할 수 있습니다. - 단, 재귀함수를 사용하는 경우 함수 호출이 계속해서 쌓이기 때문에 호출 스택이 많아져서 성능이 저하될 수 있습니다. 따라서 재귀함수를 작성할 때는 무한루프에 빠지지 않도록 종료 조건을 명확하게 설정해주어야 합니다. [ 더 알아보기 ] 💡 호출 스택(Call Stack)이란? - 프로그램에서 함수나 메서드를 호출할 때 해당 함수나 메서..