728x90
반응형

JAVA/Algorithm 3

[algorithm] 그리디(greedy, 탐욕) 알고리즘

🤔 그리디 알고리즘 탐욕, 욕심쟁이 알고리즘이라고도 불림. 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫒아 최종적인 해답에 도달하는 방법 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다 현재의 최적 해 != 전체의 최적 해 🧦 사용해야 하는 조건 서울에서 대전을 거쳐 부산까지 가는 최적의 경로를 선택해라. 1. 현재의 선택이 미래의 선택에 영향을 주지 않는다. 2. 부분의 최적 해가 모이면 전체의 최적 해가 된다. 그리디 문제를 푸는 방법의 핵심은 정렬이다. 어떻게 정렬해야 이 두가지 조건을 만족할 수 있을지 생각해야한다. 🤖 그리디는 왜 사용할까? 빠른 속도 : 항상 최적의 선택을 하기 때문에 dp보다도..

JAVA/Algorithm 2023.06.11

[Algorithm] 정렬 알고리즘(버블정렬, 선택정렬, 삽입 정렬)

버블정렬(Bubble Sort)버블정렬(Bubble Sort)은 인접한 두 개의 요소를 비교하면서 크기가 작은 요소를 앞으로 이동시키고 큰 요소를 뒤로 이동시키면서 정렬하는 알고리즘이다. 버블정렬의 동작 방식 1. 배열의 첫번째 요소부터 마지막 요소까지 반복하여 인접한 두 요소를 비교한다. 2. 왼 쪽 요소가 오른쪽 요소보다 크면, 두 요소의 위치를 교환한다. 3. 배열의 마지막 요소까지 이동한 후, 가장 큰 요소가 배열의 마지막에 위치하게 된다. 4. 다음 반복에서는 배열의 첫번째 요소부터 마지막에서 두번째 요소까지 인접한 두 요소를 비교하면서 정렬한다. 마지막 요소는 이미 정렬이 완료되었기 때문에 제외한다. 5. 이러한 과정을 배열의 모든 요소가 정렬될 때까지 반복한다. 1~4번 과정을 배열이 정렬될..

JAVA/Algorithm 2023.03.12

[JAVA] 깊이 우선 탐색(DFS) 전위/중위/후위 순회

그래프 탐색 알고리즘 탐색(Search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말한다. 대표적인 그래프 탐색 알고리즘은 DFS와 BFS가 있다. 구현 방법 DFS : 스택, 재귀함수 BFS : 큐 스택 자료구조 : 먼저 들어온 데이터가 나중에 나가는 형식으로(First In Last Out으로 FILO, 선입후출)의 자료구조이다. 큐 자료구조 : 먼저 들어온 데이터가 먼저 나가는 형식(First In First Out으로 FIFO, 선입선출)의 자료구조이다. 재귀함수 : 재귀함수(Recursive Function)란 자기 자신을 다시 호출하는 함수를 의미한다. DFS 전위 순회 : 부모 -> 왼쪽 자식 -> 오른쪽 자식 : F B A D C E G I H 중위 순회 : 왼쪽 자식 ->..

JAVA/Algorithm 2022.10.09
728x90
반응형