[Java / 알고리즘] 탐욕 알고리즘(그리드 알고리즘)
·
알고리즘 & 코딩 테스트/알고리즘
### 1. 탐욕 알고리즘 이란? - Greedy algorithm 또는 탐욕 알고리즘 이라고 불리움 - 최적의 해에 가까운 값을 구하기 위해 사용됨 - 여러 경우 중 하나를 결정해야할 때마다, **매순간 최적이라고 생각되는 경우를 선택**하는 방식으로 진행해서, 최종적인 값을 구하는 방식 1. 탐욕 알고리즘(Greedy Algorithm) 각 단계에서 지금 당장 가장 좋은 선택을 하는 알고리즘 이 선택은 그 순간에 대해 최적일지라도, 이후의 선택에 대해서는 고려하지 않는다 여러 가능성 중 하나를 선택할 때 마다 현재의 선택이 문제의 최적 해에 얼마나 가까워지는지를 고려하여 선택을 진행한다 2. 대표적인 문제 1) 거스름돈 문제 import java.util.HashMap; import java.util..
[Java / 알고리즘] 그래프 알고리즘 BFS와 DFS
·
알고리즘 & 코딩 테스트/알고리즘
대표적인 그래프 탐색 알고리즘으로는 너비 우선 탐색(BFS, Breadth First Search)과 깊이 우선 탐색(DFS, Depth First Search)가 있다. 1. 너비 우선 탐색 (BFS, Breadth First Search) 정점들과 같은 레벨에 있는 노드들(형제 노드들)을 먼저 탐색하는 방식이다 위 그림에서는, A - B - C - D - G - H - I - E - F - J 순으로 탐색한다 BFS는 재귀적으로 동작하지 않고 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 큐(Queue)를 사용한다 즉, 선입선출(FIFO) 원칙을 탐색한다 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하기 때문에 두 노드 사이의 최단 경로를 찾을 때 주로 사용한다..
[Java / 알고리즘] 탐색 알고리즘. 순차 탐색(선형 탐색), 이진 탐색
·
알고리즘 & 코딩 테스트/알고리즘
탐색이란 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 말한다. 1. 순차 탐색(Sequential Search), 선형 탐색(Linear Search) 순차 탐색 또는 선형 탐색이라고 한다. 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법이다. [ 코드 ] public class main { public static void main(String[] args) { int[] array = {23, 45, 12, 67, 89, 34, 56, 72}; int target = 34; // 선형 탐색을 수행하고 결과를 출력 int result = linearSearch(array, target); if (result == -1) { System.out.println("Ele..
[Java / 알고리즘] 대표적인 정렬 알고리즘. 버블 정렬, 삽입 정렬, 선택 정렬
·
알고리즘 & 코딩 테스트/알고리즘
정렬 알고리즘은 n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘이다. 예를 들어 n개의 숫자가 저장되어있는 배열을, 오름차순의 조건으로 작성하여 입력하면 오름차순으로 정렬된 배열을 출력으로 구할 수 있다. 정렬 알고리즘은 정말 다양한데, 이에 따라 각각의 수행시간도 천차 만별이다. 1. 버블 정렬(Bubble Sort) 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 방식이다. [ 코드 ] static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { boolean swap = false; for (int j = ..
마볼링
'알고리즘' 태그의 글 목록