프로그래밍/알고리즘2 [Algorithm] 정렬 알고리즘 - selectionSort(선택 정렬) void selectionSort(vector &A){ for(int i=0;iA[j]){ minIdx = j; } } swap(i, minIdx, A); }}각각의 i번째 element에 대해, [i+1, N) 번째 element와 비교하여, 그 중 가장 작은 element와 i번째 element를 교체한다. 시간복잡도는 O(N^2)이다. 주어진 배열(혹은 vector나 list)의 element들이 무엇이든 간에 오직 해당 배열의 크기 N만이 시간 복잡도에 관여하므로, 최선/최악의 경우 모두 시간복잡도가 같다. 2024. 5. 10. [Algorithm] BruteForce 0. 정의 BruteForce란, '무식하게 풀어본다'는 말 그대로, 모든 가능한 경우의 수를 하나하나 늘어놓아 가며 그 답을 구하는 알고리즘이다. 다른 말로는 완전 탐색(Exhaustive Search) 이라고도 한다. 사람이 일일이 손으로 나열해 가며 풀기에는 그 경우의 수가 너무 방대하나, 컴퓨터라면 충분히 계산할 수 있기 때문에 어찌 보면 컴퓨터의 성능을 가장 잘 활용할 수 있는 방법이다. 가장 아름답지 못해 보이는 풀이법이 가장 컴퓨터의 순수성과 닿아 있는 방법이라고 할 수 있다. 1. 접근법 for, while문 등의 방법을 통해 접근할 수도 있고, 주로 재귀호출(recursive call)을 사용해 접근한다. 재귀호출을 사용할 때는 반드시 Base case를 올바르게 설정하여 무한 재귀호출의.. 2024. 1. 6. 이전 1 다음