C45 [C]백준 12.정렬: 11650 백준 11650 내코드 #define _CRT_SECURE_NO_WARNINGS #include #define MAX_SIZE 100001 int sorted[MAX_SIZE][2]; int arr[100001][2]; void merge(int list[][2], int left, int mid, int right) { int i, j, k, l; i = left; j = mid + 1; k = left; while (i mid) { for (l = j; l x > b->x) return 1; else { if (a->y y) return -1; else return 1; } return 0; } int main() { int i, n; coord* list; scanf("%d", &n); l.. 2022. 1. 24. [C]백준 12.정렬: 1427 백준 1427 내코드 #define _CRT_SECURE_NO_WARNINGS #include int main() { int n; int arr[10] = { 0, }; scanf("%d", &n); while (n > 0) { arr[n % 10]++; n /= 10; } for (int i = 9; i >=0; i--) { for(int j = 0; j < arr[i]; j++) { printf("%d", i); } } return 0; } 각 자리의 수들을 정렬하면 되기에 정렬해야하는 수의 범위는 0부터 9까지이다. 따라서 수의 범위가 적기에 카운팅 정렬방법으로 문제를 풀었다. 각 숫자가 입력된 수에 몇 개 있는 지 표시하기 위해 미리 크기가 10인 arr배열을 0으로 초기화해두었다. 그 후 입력받.. 2022. 1. 22. [C]백준 12.정렬: 2108 백준2108 내코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include int arr[500001]; int num[8001] = { 0, }; int compare(const void* a, const void* b) { if (*(int*)a * (int*)b) return 1; return 0; } int main() { int n; scanf("%d", &n); int sum = 0; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); sum += arr[i]; num[arr[i] + 4000]++; } int avg = round((d.. 2022. 1. 22. [C]백준 12.정렬: 10989 백준10989 내코드 #define _CRT_SECURE_NO_WARNINGS #include int main() { int n; int arr[10001] = { 0, }; scanf("%d", &n); int temp; for (int i = 0; i < n; i++) { scanf("%d", &temp); arr[temp]++; } for (int i = 0; i < 10001; i++) { for (int j = 0; j < arr[i]; j++) { printf("%d\n", i); } } return 0; } 문제 설명에서 "수의 범위가 작다면 카운팅 정렬을 사용하여 더욱 빠르게 정렬할 수 있습니다."라고 나와있어서 힌트를 얻을 수 있었지만 왜 그래야하는지 알아보았다. 이 문제의 조건을 살펴보.. 2022. 1. 21. 이전 1 2 3 4 5 ··· 12 다음