Algorithm 44

[C++] 5576번 콘테스트

각각 10개의 입력으로 정해져 있으므로 크기 10짜리 배열 2개를 만들어 입력을 받아주고 sort함수를 이용하여 내림차순으로 정렬을 해주었다. 높은 점수 순으로 3명의 점수만 합산되므로 3번째까지의 점수를 각각 더해주어서 출력해주었다. #include #include #define sync ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); using namespace std; void Contest(){ int W[10], K[10]; int W_score = 0; int K_score = 0; for(int i=0; i> inp; W[i] = inp; } sort(W, W+10, greater()); for(int i=0; i> inp; K[i]..

[Sorting] Quick Sort (퀵 정렬)

원리 퀵정렬은 Divide & Conquer algorithm중 하나로 "pivot"이라는 기준값을 지정하여 pivot을 기점으로 배열을 partitioning하여 정렬하는 알고리즘이다. 보통 pivot은 배열의 맨 앞 원소를 지정하는데 두번째 원소부터 오른쪽으로 pivot보다 큰값을 찾고, 맨 마지막 원소부터 왼쪽으로 pivot보다 작은 값을 찾아나간다. 만약 왼쪽으로 훑던 것이 오른쪽을 추월한다면 pivot과 오른쪽 기준을 swap하고 그렇지 않다면 왼쪽 오른쪽 값을 swap한다. Complexity 모든 원소를 한번씩 훑기때문에 O(n), 배열을 반으로 계속 divide하기 때문에 O(log2n)으로 총 O(nlogn)이라는 빠른 속도를 가진다. 주의사항 - Worst Case ! 배열이 이미 정렬..

Algorithm 2022.03.22
728x90