CS
CS 기술 면접 - 알고리즘
윤깡패
2023. 7. 26. 23:30
📍 정렬 알고리즘
더보기
- 삽입 정렬(Insertion Sort)
- 두 번째 값부터 시작해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식
- 평균 시간복잡도 : O(n²)
- 최선의 경우 시간복잡도 : O(n) ⇒ 데이터가 거의 정렬되어 있는 경우
- 선택 정렬(Selection Sort)
- 남은 정렬 부분에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식
- 평균 시간복잡도 : O(n²)
- 버블 정렬(Bubble Sort)
- 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식
- 평균 시간복잡도 : O(n²)
- 퀵 정렬(Quick Sort)
- pivot을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 방식
- 평균 시간복잡도 : O(nlogn)
- 최악의 경우 시간복잡도 : O(n²) ⇒ 데이터가 거의 정렬되어 있는 경우
- 힙 정렬(Heap Sort)
- 주어진 데이터를 힙 자료구조로 만들어 최대값 또는 최솟값부터 하나씩 꺼내서 정렬하는 방식
- 평균 시간복잡도 : O(nlogn)
- 병합 정렬(Merge Sort)
- 분할 정복(Divide and Conquer) 방식을 사용해 데이터를 분할하고 분할한 집합을 정렬하며 합치는 방식
- 평균 시간복잡도 : O(nlogn)
📍 동적 프로그래밍
더보기
- 동적 프로그래밍(Dynamic Programming) : 한 번 해결된 부분 문제의 정답을 메모리에 기록하여, 한 번 계산한 답은 다시 계산하지 않도록 하는 문제 해결 기법
- 동적 프로그래밍의 조건
- 큰 문제를 작은 문제로 나눌 수 있어야 한다.
- 작은 문제들이 반복돼 나타나고 사용되며, 이 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일해야 한다.
- 메모이제이션(Memoization) 기법 : 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 가져오는 기법으로, 속도를 향상시킬 수 있다.
📍 재귀 알고리즘
더보기
- 재귀 알고리즘 : 함수 내부에서 함수가 자기 자신을 또 다시 호출하여 문제를 해결하는 알고리즘
728x90