백준 2108 : 통계학
백준 (C99)/정렬 (完) 2022. 2. 5. 23:03

생각보다 많이 귀찮았던 문제이다. 사실 문제 자체는 이전 정렬문제들의 혼합버전같은 느낌이었다 단지, 이번에는 수의 범위가 양수만이 아닌 음수도 포함되어 있다는 점 까지 고려해서 코드를 작성하면 되겠다. #include #include int compare(const void *a, const void *b) { int num1 = *(int *)a; int num2 = *(int *)b; if (num1 > num2) return 1; else if(num1 < num2) return -1; else if(num1 == num2) return 0; } int solve() { int N, sum = 0, freq = 0, range = 0; int cnt[8001] = {0,}, check[8001] =..

백준 10989 : 수 정렬하기 3
백준 (C99)/정렬 (完) 2022. 2. 5. 16:05

또 수 정렬하기다. 애초에 문제 잘 보다보면, 카운팅 정렬을 사용하라고 아주 친절하게 나와있다. 카운팅 정렬이란, 1. 일단 숫자를 쭉 입력받는다. 2. 그 숫자가 몇번 나왔는지 count하는 배열을 만든다. 3. i번째 순서라고 가정할때, count 배열의 i+1번째 방에다 i번의 값을 더해준다. 4. 입력배열을 A, 카운팅 배열을 C, 출력 배열을 B라고 하면 A 배열을 거꾸로 돌리면서 A값의 카운팅 배열 방을 참조한다, 그리고 이 값을 출력배열인 B의 방번호에 넣어준다 설명이 좀 복잡한데, B[C[A[i]]] 가 되는거다. 그리고 이 방의 값은 A[i]를 넣어준다. 그리고 A값의 카운팅 배열 방의 값을 1 빼준다. 5. 이 과정을 반복하면 수가 정렬된다. 설명 봐서는 뭔소린지 잘 이해가 안 될 수도..

백준 2751 : 수 정렬하기 2
백준 (C99)/정렬 (完) 2022. 2. 3. 23:01

https://dojang.io/mod/page/view.php?id=638 qsort에 대한 더 자세한 정보이다. C 언어 코딩 도장: 73.2 퀵 정렬 함수 사용하기 이번에는 퀵 정렬 함수를 사용해보겠습니다. 퀵 정렬 함수에는 정렬할 배열 또는 메모리의 주소, 요소 개수, 요소 크기, 비교 함수를 넣어줍니다(stdlib.h 헤더 파일에 선언되어 있습니다). qsort(정 dojang.io 이전 문제와 같다고 생각하면 오산이다, 똑같은 코드 두번 넣어서 맞을 문제가 어디있겠냐고 이전 선택정렬을 사용한다면 백이면 백 시간오바로 틀린다 C언어를 하면서 없으면 다 본인이 만든 경험에 비추어, C에서 다른 정렬을 내가 구현할 생각에 머리가 아팠는데 놀랍게도 C언어에는 퀵 정렬이 함수로 존재한다. 바로 stdl..

백준 2750 : 수 정렬하기
백준 (C99)/정렬 (完) 2022. 2. 3. 22:36

심플하게 정렬하면 되는 문제다. 정렬 방법이야 뭐 버블정렬도 있고 선택정렬도 있고,, 저는 선택정렬 사용했습니다 #include int solve() { int N, temp; scanf("%d", &N); int arr[N]; for(int i=0;i