알고리즘 5

[알고리즘] 시간복잡도란?

시간 복잡도란? 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간 빅-오 표기법 시간 복잡도에는 여러 개념이 있지만 그중에서 '아무리 많이 걸려도 이 시간 안에는 끝날 것'의 개념이 제일 중요하다. 이 중에서 최악의 경우를 계산하는 방식을 빅-오(Big-O) 표기법이라고 부르며 이 방식을 가장 많이 사용한다. O(1) (Constant) 입력 데이터의 크기에 상관없이 언제나 일정한 시간이 걸리는 알고리즘 예) Array O(log₂ n) (Logarithmic) 입력 데이터의 크기가 커질수록 처리 시간이 로그(log: 지수 함수의 역함수) 만큼 짧아지는 알고리즘 예) 이진 탐색, 재귀가 순기능으로 이루어지는 경우 O(n) (Linear) 입력 데이터의 크기에 비례해 처리 시간이 증가하는 알고리즘 예) ..

알고리즘/JAVA 2021.04.12

[정렬] 선택 정렬

개념 최소값을 앞으로 이동시키며 정렬하는 방식(오름차순 기준) 1. 주어진 배열에서 최소값을 찾는다. 2. 찾은 최소값을 배열의 맨 앞에 위치한 값과 교체한다. 3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 처리과정 선택정렬은 인덱스가 중요한데 최소값을 인덱스를 0부터 마지막 인덱스까지 증가시키면서 최소값을 해당 인덱스의 값과 교체하면 된다. 위의 배열에서 최소값을 찾으면 7번 인덱스 값 2가 최소값인걸 확인 할 수 있다. 이 값을 0번 인덱스의 값 14와 교체한다. 기준점이 되는 인덱스를 1 올리고 그 다음 최소값을 찾아 같은 방법으로 정렬을 시작한다. 자세한 과정은 아래 그림을 참고하면 된다. package S_20210126; public class selectArray{ pub..

알고리즘 2021.01.26

[DFS / BFS] 개념와 차이

그래프의 개념 장점과 간선으로 이루어진 자료구조의 일종. G = (V, E) 그래프 탐색 하나의 장점으로부터 시작하여 차례대로 모든 장점들을 한 번씩 방문하는 것 깊이 우선 탐색 (DFS, Depth-First Search) 개념 로트 노드에서 시작해서 다음 분기(branch)로 넘어가지 전에 해당 분기를 완벽하게 탐색하는 방법 1. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사함 2. 즉 넓게(wide) 탐색하기 전에 깊에(deep) 탐색함 3. 모든 노드를 방문하고자 하는 경우에 이 방법을 선택함 4. 깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 좀 더 간..

알고리즘 2021.01.26